From: Allan McRae Date: Mon, 9 Sep 2013 12:50:41 +0000 (+1000) Subject: Fix memory leaks in libio on allocation failure X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e395175c4786ad9679851e3ed3c0c54a6f4e1f0;p=thirdparty%2Fglibc.git Fix memory leaks in libio on allocation failure --- diff --git a/ChangeLog b/ChangeLog index 2f9dea5d0b7..68909c8ec96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2013-09-09 Allan McRae + + [BZ #15892] + * libio/memstream.c (open_memstream): Fix memory leak. + * libio/wmemstream.c (open_wmemstream): Likewise. + + [BZ #15895] + * nscd/netgroupcache.c: Fix nesting of ifdefs. + 2013-09-05 Adhemerval Zanella * sysdeps/powerpc/powerpc32/power7/memrchr.S (__memrchr): Fix invalid diff --git a/NEWS b/NEWS index 6a62ddf6fde..90ff9932e56 100644 --- a/NEWS +++ b/NEWS @@ -22,7 +22,7 @@ Version 2.18 15423, 15424, 15426, 15427, 15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506, 15522, 15529, 15532, 15536, 15553, 15577, 15583, 15618, 15627, 15631, 15654, - 15655, 15666, 15667, 15674, 15711, 15755, 15759, 15797. + 15655, 15666, 15667, 15674, 15711, 15755, 15759, 15797, 15892, 15895. * CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal has been fixed by disabling the use of pt_chown (Bugzilla #15755). diff --git a/libio/memstream.c b/libio/memstream.c index 34534e2f94c..3cb1bd7057d 100644 --- a/libio/memstream.c +++ b/libio/memstream.c @@ -84,7 +84,10 @@ open_memstream (bufloc, sizeloc) buf = calloc (1, _IO_BUFSIZ); if (buf == NULL) - return NULL; + { + free (new_f); + return NULL; + } _IO_init (&new_f->fp._sf._sbf._f, 0); _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp._sf._sbf) = &_IO_mem_jumps; _IO_str_init_static_internal (&new_f->fp._sf, buf, _IO_BUFSIZ, buf); diff --git a/libio/wmemstream.c b/libio/wmemstream.c index 65738d4d7f2..fd7fe44c4c3 100644 --- a/libio/wmemstream.c +++ b/libio/wmemstream.c @@ -85,8 +85,10 @@ open_wmemstream (bufloc, sizeloc) buf = calloc (1, _IO_BUFSIZ); if (buf == NULL) - return NULL; - + { + free (new_f); + return NULL; + } _IO_no_init (&new_f->fp._sf._sbf._f, 0, 0, &new_f->wd, &_IO_wmem_jumps); _IO_fwide (&new_f->fp._sf._sbf._f, 1); _IO_wstr_init_static (&new_f->fp._sf._sbf._f, buf,