On 02/02/13 16:43, Gert Doering wrote:
> Hi,
>
> On Sat, Feb 02, 2013 at 03:36:37PM +0100, Arne Schwabe wrote:
>> The construct_name_value eventually call gc_malloc with NULL as gc which
>> will trigger an assertion
> [..]
>> - char *str = construct_name_value (name_tmp, val_tmp, NULL);
>> + char *str = construct_name_value (name_tmp, val_tmp, &gc);
>> if (platform_putenv(str))
>> {
>> msg (M_WARN | M_ERRNO, "putenv('%s') failed", str);
>
> NAK!
>
> platform_putenv() calls putenv() on non-windows platforms, and that one
> will just add a pointer to the string passed to it to envp[] (at least
> that's how I read the manpage: "The string pointed to by string becomes
> part of the environment, so altering the string changes the environment").Correct ... Please see this thread for more info (including proof-of-concept code) <http://thread.gmane.org/gmane.network.openvpn.devel/7090> > So your environment now points to a garbage buffer, which is then > destroyed again. > > I think there needs to be a strdup() here... Yeah, but that would be prone to leak memory again ... > (And I seem to remember that "some of the buffer functions" did exactly > this when &gc was NULL, but maybe we threw this out last year... David?) I think the commit you think about is this one: commit bee92b479414d12035b0422f81ac5fcfe14fa645 Author: Adriaan de Jong <[email protected]> List-Post: [email protected] Date: Sun Feb 5 12:51:25 2012 +0100 Removed support for calling gc_malloc with a NULL gc_arena struct Signed-off-by: Adriaan de Jong <[email protected]> Acked-by: David Sommerseth <[email protected]> Signed-off-by: David Sommerseth <[email protected]> That basically impacted all calls ending up in gc_malloc(). But this was prone to leak memory when called with NULL as the gc_arena pointer. After a discussion, we ended up agreeing to solve issues this patch would flush open - instead of trying to fix those leaking areas instantly; then it would just have been a temporary fix until it would be abused again. -- kind regards, David Sommerseth
signature.asc
Description: OpenPGP digital signature
