diff options
author | Michael Snyder <msnyder@specifix.com> | 2011-03-01 01:58:32 +0000 |
---|---|---|
committer | Michael Snyder <msnyder@specifix.com> | 2011-03-01 01:58:32 +0000 |
commit | 0bf07cb790909a1eac146b28c7533aeeb389a64f (patch) | |
tree | f62dac7c370af515eb47d0e20b9456c274cbaf62 /gdb | |
parent | a9fd35627defc77e0864835ebaa95785c0cb70b0 (diff) | |
download | gdb-0bf07cb790909a1eac146b28c7533aeeb389a64f.tar.gz |
2011-02-28 Michael Snyder <msnyder@vmware.com>
* coffread.c (coff_getfilename): Add check to avoid overflow.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 2 | ||||
-rw-r--r-- | gdb/coffread.c | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b1b8bf9d0a4..557f89f1ff1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,7 @@ 2011-02-28 Michael Snyder <msnyder@vmware.com> + * coffread.c (coff_getfilename): Add check to avoid overflow. + * objc-lang.c (selectors_info): Add a small safety margin to avoid overflow. (classes_info): Error out on too long REGEXP. diff --git a/gdb/coffread.c b/gdb/coffread.c index 156661128e2..9df775d46b9 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -1316,7 +1316,11 @@ coff_getfilename (union internal_auxent *aux_entry) char *result; if (aux_entry->x_file.x_n.x_zeroes == 0) - strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_offset); + { + if (strlen (stringtab + aux_entry->x_file.x_n.x_offset) >= BUFSIZ) + internal_error (__FILE__, __LINE__, _("coff file name too long")); + strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_offset); + } else { strncpy (buffer, aux_entry->x_file.x_fname, FILNMLEN); |