2003-09-24  Paul Eggert  <eggert@twinsun.com>

	* argp/argp-fmtstream.c (__argp_fmtstream_ensure): Check for
	size_t overflow when reallocating storage.
	* argp/argp-help.c (make_hol, hol_append): Likewise.
	(SIZE_MAX): New macro.
This commit is contained in:
Ulrich Drepper 2003-09-25 05:38:48 +00:00
parent c706f2a34d
commit 32868f8801
2 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2003-09-24 Paul Eggert <eggert@twinsun.com>
* argp/argp-fmtstream.c (__argp_fmtstream_ensure): Check for
size_t overflow when reallocating storage.
* argp/argp-help.c (make_hol, hol_append): Likewise.
(SIZE_MAX): New macro.
2003-08-07 Alfred M. Szmidt <ams@kemisten.nu> 2003-08-07 Alfred M. Szmidt <ams@kemisten.nu>
* sysdeps/mach/hurd/bits/libc-lock.h * sysdeps/mach/hurd/bits/libc-lock.h

View File

@ -73,6 +73,10 @@ char *alloca ();
#include "argp.h" #include "argp.h"
#include "argp-fmtstream.h" #include "argp-fmtstream.h"
#include "argp-namefrob.h" #include "argp-namefrob.h"
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
/* User-selectable (using an environment variable) formatting parameters. /* User-selectable (using an environment variable) formatting parameters.
@ -441,7 +445,8 @@ make_hol (const struct argp *argp, struct hol_cluster *cluster)
hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries); hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries);
hol->short_options = malloc (num_short_options + 1); hol->short_options = malloc (num_short_options + 1);
assert (hol->entries && hol->short_options); assert (hol->entries && hol->short_options
&& hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry));
/* Fill in the entries. */ /* Fill in the entries. */
so = hol->short_options; so = hol->short_options;
@ -834,6 +839,9 @@ hol_append (struct hol *hol, struct hol *more)
char *short_options = char *short_options =
malloc (hol_so_len + strlen (more->short_options) + 1); malloc (hol_so_len + strlen (more->short_options) + 1);
assert (entries && short_options
&& num_entries <= SIZE_MAX / sizeof (struct hol_entry));
__mempcpy (__mempcpy (entries, hol->entries, __mempcpy (__mempcpy (entries, hol->entries,
hol->num_entries * sizeof (struct hol_entry)), hol->num_entries * sizeof (struct hol_entry)),
more->entries, more->entries,