1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

* stdio-common/vfprintf.c (vfprintf): Check malloc return; don't

call free(NULL).
This commit is contained in:
Paul Pluzhnikov
2013-03-05 13:44:33 -08:00
parent 72a3b700c5
commit cdcf361fda
2 changed files with 19 additions and 5 deletions

View File

@@ -1,8 +1,13 @@
2013-03-05 Paul Pluzhnikov <ppluzhnikov@google.com>
* stdio-common/vfprintf.c (vfprintf): Check malloc return; don't
call free(NULL).
2013-03-05 David S. Miller <davem@davemloft.net> 2013-03-05 David S. Miller <davem@davemloft.net>
* po/es.po: Update from translation team. * po/es.po: Update from translation team.
2013-03-04 Andreas Jaeger <aj@suse.de> 2013-03-05 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/s390/bits/mman.h: Include * sysdeps/unix/sysv/linux/s390/bits/mman.h: Include
<bits/mman-linux.h>. <bits/mman-linux.h>.

View File

@@ -1691,7 +1691,8 @@ do_positional:
/* Just a counter. */ /* Just a counter. */
size_t cnt; size_t cnt;
free (workstart); if (__builtin_expect (workstart != NULL, 0))
free (workstart);
workstart = NULL; workstart = NULL;
if (grouping == (const char *) -1) if (grouping == (const char *) -1)
@@ -1944,6 +1945,11 @@ do_positional:
{ {
workstart = (CHAR_T *) malloc ((MAX (prec, width) + 32) workstart = (CHAR_T *) malloc ((MAX (prec, width) + 32)
* sizeof (CHAR_T)); * sizeof (CHAR_T));
if (workstart == NULL)
{
done = -1;
goto all_done;
}
workend = workstart + (MAX (prec, width) + 32); workend = workstart + (MAX (prec, width) + 32);
} }
} }
@@ -2021,7 +2027,8 @@ do_positional:
break; break;
} }
free (workstart); if (__builtin_expect (workstart != NULL, 0))
free (workstart);
workstart = NULL; workstart = NULL;
/* Write the following constant string. */ /* Write the following constant string. */
@@ -2032,8 +2039,10 @@ do_positional:
} }
all_done: all_done:
free (args_malloced); if (__builtin_expect (args_malloced != NULL, 0))
free (workstart); free (args_malloced);
if (__builtin_expect (workstart != NULL, 0))
free (workstart);
/* Unlock the stream. */ /* Unlock the stream. */
_IO_funlockfile (s); _IO_funlockfile (s);
_IO_cleanup_region_end (0); _IO_cleanup_region_end (0);