2004-09-20  Roland McGrath  <roland@frob.com>
	* elf/dl-load.c (__stack_prot): Only use PROT_GROWSUP/PROT_GROWSDOWN
	in initializer #if defined.

2004-09-18  Paul Eggert  <eggert@cs.ucla.edu>

	[BZ #391]
	* stdlib/getsubopt.c: Merge fixes from gnulib.
	(__strchrnul) [!_LIBC]: Define and include "strchrnul.c".
	(getsubopt): Use prototypes, not K&R style.
	Fix bug: memcmp(A,B,N) was being invoked on a memory block B
	whose size might be smaller than N.  Use strncmp to avoid the bug.
This commit is contained in:
Roland McGrath 2004-09-20 20:56:19 +00:00
parent 44828b9d2a
commit f6f43da73f
2 changed files with 25 additions and 6 deletions

View file

@ -1,3 +1,17 @@
2004-09-20 Roland McGrath <roland@frob.com>
* elf/dl-load.c (__stack_prot): Only use PROT_GROWSUP/PROT_GROWSDOWN
in initializer #if defined.
2004-09-18 Paul Eggert <eggert@cs.ucla.edu>
[BZ #391]
* stdlib/getsubopt.c: Merge fixes from gnulib.
(__strchrnul) [!_LIBC]: Define and include "strchrnul.c".
(getsubopt): Use prototypes, not K&R style.
Fix bug: memcmp(A,B,N) was being invoked on a memory block B
whose size might be smaller than N. Use strncmp to avoid the bug.
2004-09-20 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c: Define __stack_prot.

View file

@ -1,5 +1,5 @@
/* Parse comma separate list into words.
Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1999, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -21,6 +21,14 @@
#include <stdlib.h>
#include <string.h>
#if !_LIBC
/* This code is written for inclusion in gnu-libc, and uses names in
the namespace reserved for libc. If we're compiling in gnulib,
define those names to be the normal ones instead. */
# include "strchrnul.h"
# undef __strchrnul
# define __strchrnul strchrnul
#endif
/* Parse comma separated suboption from *OPTIONP and match against
strings in TOKENS. If found return index and set *VALUEP to
@ -29,10 +37,7 @@
suboption. On exit *OPTIONP is set to the beginning of the next
token or at the terminating NUL character. */
int
getsubopt (optionp, tokens, valuep)
char **optionp;
char *const *tokens;
char **valuep;
getsubopt (char **optionp, char *const *tokens, char **valuep)
{
char *endp, *vstart;
int cnt;
@ -51,7 +56,7 @@ getsubopt (optionp, tokens, valuep)
/* Try to match the characters between *OPTIONP and VSTART against
one of the TOKENS. */
for (cnt = 0; tokens[cnt] != NULL; ++cnt)
if (memcmp (*optionp, tokens[cnt], vstart - *optionp) == 0
if (strncmp (*optionp, tokens[cnt], vstart - *optionp) == 0
&& tokens[cnt][vstart - *optionp] == '\0')
{
/* We found the current option in TOKENS. */