* misc/regexp.h (compile): Use __REPB_PREFIX macro.
Avoid segfault if first GETC returns eof/'\0'/'\n'. 2008-06-05 Jakub Jelinek <jakub@redhat.com> * misc/regexp.h (compile): Use __REPB_PREFIX macro. Avoid segfault if first GETC returns eof/'\0'/'\n'.
This commit is contained in:
parent
ee78670e26
commit
eef8a803a6
@ -1,3 +1,8 @@
|
||||
2008-06-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* misc/regexp.h (compile): Use __REPB_PREFIX macro.
|
||||
Avoid segfault if first GETC returns eof/'\0'/'\n'.
|
||||
|
||||
2008-06-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* nscd/nscd_getserv_r.c (__nscd_getservbyport_r): Pass cp
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998, 1999, 2004, 2008
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
@ -129,8 +130,9 @@ compile (char *__restrict instring, char *__restrict expbuf,
|
||||
__expr_ptr = (regex_t *) expbuf;
|
||||
/* The remaining space in the buffer can be used for the compiled
|
||||
pattern. */
|
||||
__expr_ptr->buffer = expbuf + sizeof (regex_t);
|
||||
__expr_ptr->allocated = endbuf - (char *) __expr_ptr->buffer;
|
||||
__expr_ptr->__REPB_PREFIX (buffer) = expbuf + sizeof (regex_t);
|
||||
__expr_ptr->__REPB_PREFIX (allocated)
|
||||
= endbuf - (char *) __expr_ptr->__REPB_PREFIX (buffer);
|
||||
|
||||
while ((__ch = (GETC ())) != eof)
|
||||
{
|
||||
@ -162,7 +164,10 @@ compile (char *__restrict instring, char *__restrict expbuf,
|
||||
}
|
||||
__input_buffer[__current_size++] = __ch;
|
||||
}
|
||||
__input_buffer[__current_size++] = '\0';
|
||||
if (__current_size)
|
||||
__input_buffer[__current_size++] = '\0';
|
||||
else
|
||||
__input_buffer = "";
|
||||
|
||||
/* Now compile the pattern. */
|
||||
__error = regcomp (__expr_ptr, __input_buffer, REG_NEWLINE);
|
||||
@ -198,7 +203,8 @@ compile (char *__restrict instring, char *__restrict expbuf,
|
||||
}
|
||||
|
||||
/* Everything is ok. */
|
||||
RETURN ((char *) (__expr_ptr->buffer + __expr_ptr->used));
|
||||
RETURN ((char *) (__expr_ptr->__REPB_PREFIX (buffer)
|
||||
+ __expr_ptr->__REPB_PREFIX (used)));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user