mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 15:24:07 +08:00
cppinit.c (cpp_start_read): Fix buffer overwrite.
Tue Apr 13 12:14:07 1999 Dave Brolley <brolley@cygnus.com> * cppinit.c (cpp_start_read): Fix buffer overwrite. * Makefile.in (cppinit.o): Typo in dependencies. From-SVN: r26401
This commit is contained in:
parent
a4e44caa6d
commit
9e934a98fa
@ -1,3 +1,8 @@
|
||||
Tue Apr 13 12:14:07 1999 Dave Brolley <brolley@cygnus.com>
|
||||
|
||||
* cppinit.c (cpp_start_read): Fix buffer overwrite.
|
||||
* Makefile.in (cppinit.o): Typo in dependencies.
|
||||
|
||||
Tue Apr 13 05:04:59 1999 Richard Earnshaw (rearnsha@arm.com)
|
||||
|
||||
* arm.h (function prototypes for arm.c): Ifdef these out if
|
||||
|
@ -1988,7 +1988,7 @@ cpperror.o: cpperror.c $(CONFIG_H) cpplib.h intl.h system.h
|
||||
cppexp.o: cppexp.c $(CONFIG_H) cpplib.h intl.h system.h
|
||||
cppfiles.o: cppfiles.c $(CONFIG_H) cpplib.h intl.h system.h
|
||||
|
||||
cppinit.o: cppalloc.c $(CONFIG_H) cpplib.h intl.h system.h \
|
||||
cppinit.o: cppinit.c $(CONFIG_H) cpplib.h intl.h system.h \
|
||||
cpphash.h prefix.h output.h Makefile
|
||||
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
|
||||
|
@ -881,22 +881,21 @@ cpp_start_read (pfile, fname)
|
||||
{
|
||||
struct default_include *p = include_defaults_array;
|
||||
char *specd_prefix = opts->include_prefix;
|
||||
char *default_prefix = alloca (sizeof GCC_INCLUDE_DIR - 7);
|
||||
int default_len;
|
||||
int specd_len;
|
||||
|
||||
/* Search "translated" versions of GNU directories.
|
||||
These have /usr/local/lib/gcc... replaced by specd_prefix. */
|
||||
if (specd_prefix != 0)
|
||||
{
|
||||
char *default_prefix = alloca (sizeof GCC_INCLUDE_DIR - 7);
|
||||
/* Remove the `include' from /usr/local/lib/gcc.../include.
|
||||
GCC_INCLUDE_DIR will always end in /include. */
|
||||
int default_len = sizeof GCC_INCLUDE_DIR - 8;
|
||||
int specd_len = strlen (specd_prefix);
|
||||
|
||||
default_len = sizeof GCC_INCLUDE_DIR - 8;
|
||||
memcpy (default_prefix, GCC_INCLUDE_DIR, default_len);
|
||||
default_prefix[default_len] = '\0';
|
||||
|
||||
|
||||
specd_len = strlen (specd_prefix);
|
||||
for (p = include_defaults_array; p->fname; p++)
|
||||
{
|
||||
/* Some standard dirs are only for C++. */
|
||||
@ -909,10 +908,12 @@ cpp_start_read (pfile, fname)
|
||||
{
|
||||
/* Yes; change prefix and add to search list. */
|
||||
int flen = strlen (p->fname);
|
||||
int this_len = specd_len - default_len + flen;
|
||||
int this_len = specd_len + flen - default_len;
|
||||
char *str = (char *) xmalloc (this_len + 1);
|
||||
memcpy (str, specd_prefix, specd_len);
|
||||
memcpy (str+specd_len, p->fname, flen + 1);
|
||||
memcpy (str + specd_len,
|
||||
p->fname + default_len,
|
||||
flen - default_len + 1);
|
||||
|
||||
append_include_chain (pfile, opts->pending,
|
||||
str, SYSTEM);
|
||||
|
Loading…
Reference in New Issue
Block a user