aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/scanner.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-12-03 09:56:11 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-12-03 09:56:11 +0100
commit021aa628c6ecec5c0f67bd8b8fa540156f03a11f (patch)
treeddbfbac7cb92eb96312faedaa55f572327bd0afd /gcc/fortran/scanner.c
parent29a7d776ea22f0c3120f6ed2866af6649778c16a (diff)
downloadgcc-021aa628c6ecec5c0f67bd8b8fa540156f03a11f.zip
gcc-021aa628c6ecec5c0f67bd8b8fa540156f03a11f.tar.gz
gcc-021aa628c6ecec5c0f67bd8b8fa540156f03a11f.tar.bz2
re PR fortran/55475 (heap-buffer-overflow in fortran/error.c)
2012-12-03 Tobias Burnus <burnus@net-b.de> PR fortran/55475 * scanner.c (gfc_next_char_literal): Fix setting locus to free_line_length for the error message. * error.c (show_locus): Fix potential out-of-bounds read. From-SVN: r194076
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r--gcc/fortran/scanner.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index e0556a9..765c0f9 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -1068,10 +1068,12 @@ restart:
&& gfc_current_locus.lb->truncated)
{
int maxlen = gfc_option.free_line_length;
+ gfc_char_t *current_nextc = gfc_current_locus.nextc;
+
gfc_current_locus.lb->truncated = 0;
- gfc_current_locus.nextc += maxlen;
+ gfc_current_locus.nextc = gfc_current_locus.lb->line + maxlen;
gfc_warning_now ("Line truncated at %L", &gfc_current_locus);
- gfc_current_locus.nextc -= maxlen;
+ gfc_current_locus.nextc = current_nextc;
}
if (c != '&')