svn commit: r253380 - head/lib/libc/stdlib

Andrey Chernov ache at freebsd.org
Wed Jul 17 04:48:31 UTC 2013


On 17.07.2013 8:10, Andrey Chernov wrote:
> On 16.07.2013 11:26, Andriy Gapon wrote:
>> Modified: head/lib/libc/stdlib/getenv.c
>> ==============================================================================
>> --- head/lib/libc/stdlib/getenv.c	Tue Jul 16 06:50:22 2013	(r253379)
>> +++ head/lib/libc/stdlib/getenv.c	Tue Jul 16 07:26:46 2013	(r253380)
>> @@ -505,7 +505,7 @@ __setenv(const char *name, size_t nameLe
>>  		envVars[envNdx].valueSize = valueLen;
>>  
>>  		/* Save name of name/value pair. */
>> -		env = stpcpy(envVars[envNdx].name, name);
>> +		env = stpncpy(envVars[envNdx].name, name, nameLen);
>>  		if ((envVars[envNdx].name)[nameLen] != '=')
>>  			env = stpcpy(env, "=");
>>  	}
>>
> 
> I am not sure what you are trying to fix, but you just made next line
> condition unpredictable random, since (envVars[envNdx].name)[nameLen] is
> never filled now and there is freshly malloced memory content, which is
> picked for != '=' comparison.
> 
> Please back it out or fix.

If I understand that right, correct version will be:

env = stpncpy(envVars[envNdx].name, name, nameLen);
env = stpcpy(env, "=");

Condition check is not needed.

-- 
http://ache.vniz.net/
bitcoin:1G6ugdNY6e5jx1GVnAU2ntj2NEfmjKG85r


More information about the svn-src-all mailing list