aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-03-13 17:25:36 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-03-13 17:25:36 +0000
commit0e091b520e74abfcc98cd8b55525fce0ee50b6b6 (patch)
treebecf3668ee98ea8419e3774e66c8b82085465239 /gcc/cpplib.c
parentbc808e0bc5cff1895e4d6c29a8ee7775cef10594 (diff)
downloadgcc-0e091b520e74abfcc98cd8b55525fce0ee50b6b6.zip
gcc-0e091b520e74abfcc98cd8b55525fce0ee50b6b6.tar.gz
gcc-0e091b520e74abfcc98cd8b55525fce0ee50b6b6.tar.bz2
cpplib.c (do_pragma_implementation): Fix off-by-one error truncating a string.
* cpplib.c (do_pragma_implementation): Fix off-by-one error truncating a string. Don't assume tokens are nul terminated. Problem noted by Andreas Jaeger <aj@suse.de> From-SVN: r32507
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 91f86b7..02a9318 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -1705,11 +1705,12 @@ do_pragma_implementation (pfile)
return 1;
}
+ /* Trim the leading and trailing quote marks from the string. */
name = pfile->token_buffer + written + 1;
- len = strlen (name);
+ len = CPP_PWRITTEN (pfile) - name;
copy = (U_CHAR *) alloca (len);
memcpy (copy, name, len - 1);
- copy[len] = '\0'; /* trim trailing quote */
+ copy[len - 1] = '\0';
if (cpp_included (pfile, copy))
cpp_warning (pfile,