Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jul 2013 09:27:19 +0400
From:      Andrey Chernov <ache@freebsd.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r253380 - head/lib/libc/stdlib
Message-ID:  <51E62B37.8080900@freebsd.org>
In-Reply-To: <51E62219.1090006@freebsd.org>
References:  <201307160726.r6G7QlwE045679@svn.freebsd.org> <51E61950.5090206@freebsd.org> <51E62219.1090006@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 17.07.2013 8:48, Andrey Chernov wrote:
> 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.

Microoptimized:

env = stpncpy(envVars[envNdx].name, name, nameLen);
*env++ = '=';

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51E62B37.8080900>