[U-Boot] [PATCH] env: don't add an empty key to the env hashtable

Lucian Cojocar cojocar at gmail.com
Sun Apr 28 01:08:10 CEST 2013


On 04/28/2013 12:35 AM, Wolfgang Denk wrote:
> Dear Lucian Cojocar,
>
> In message <1367099787-25602-1-git-send-email-cojocar at gmail.com> you wrote:
>> If the environment contains an entry like "=value" "\0" we should skip
>> this key/value. Otherwise, U-Boot will enter in an infinite loop.
>>
>> Signed-off-by: Lucian Cojocar <cojocar at gmail.com>
>> ---
>>   lib/hashtable.c |    4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/lib/hashtable.c b/lib/hashtable.c
>> index 07ebfb2..8f5a6f8 100644
>> --- a/lib/hashtable.c
>> +++ b/lib/hashtable.c
>> @@ -870,6 +870,10 @@ int himport_r(struct hsearch_data *htab,
>>   		*sp++ = '\0';	/* terminate value */
>>   		++dp;
>>
>> +		/* skip this entry if the name is empty */
>> +		if (*name == 0)
>> +			continue;
>
> NAK.   This would be a serious error, and silently ignoring this is
> downright wrong.
>
> If such a situation should ever happen, it must cause a fatal error.
>

I agree.

> Could you please explain which exact problem you are trying to fix?
> I have to admit that I cannot think of a usage szenario that would
> lead to such an error.

I had an error (typo) in my predefined environment. Basically I had this:

#define CONFIG_EXTRA_ENV_SETTINGS \
	"key" "\0" "=value" "\0"

It would be nice if U-Boot told me that there was something wrong with 
my environment rather than just hang.

Thanks,
Lucian


More information about the U-Boot mailing list