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
This commit is contained in:
parent
29a7d776ea
commit
021aa628c6
|
@ -1,4 +1,12 @@
|
||||||
2012-11-03 Tobias Burnus <burnus@net-b.de>
|
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.
|
||||||
|
|
||||||
|
2012-12-03 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
PR fortran/37336
|
PR fortran/37336
|
||||||
* class.c (finalizer_insert_packed_call): New static function.
|
* class.c (finalizer_insert_packed_call): New static function.
|
||||||
|
|
|
@ -387,7 +387,7 @@ show_locus (locus *loc, int c1, int c2)
|
||||||
cmax -= offset;
|
cmax -= offset;
|
||||||
|
|
||||||
p = &(lb->line[offset]);
|
p = &(lb->line[offset]);
|
||||||
for (i = 0; i <= cmax; i++)
|
for (i = 0; i < cmax; i++)
|
||||||
{
|
{
|
||||||
int spaces, j;
|
int spaces, j;
|
||||||
spaces = gfc_widechar_display_length (*p++);
|
spaces = gfc_widechar_display_length (*p++);
|
||||||
|
@ -401,6 +401,11 @@ show_locus (locus *loc, int c1, int c2)
|
||||||
error_char (' ');
|
error_char (' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i == c1)
|
||||||
|
error_char ('1');
|
||||||
|
else if (i == c2)
|
||||||
|
error_char ('2');
|
||||||
|
|
||||||
error_char ('\n');
|
error_char ('\n');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1068,10 +1068,12 @@ restart:
|
||||||
&& gfc_current_locus.lb->truncated)
|
&& gfc_current_locus.lb->truncated)
|
||||||
{
|
{
|
||||||
int maxlen = gfc_option.free_line_length;
|
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.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_warning_now ("Line truncated at %L", &gfc_current_locus);
|
||||||
gfc_current_locus.nextc -= maxlen;
|
gfc_current_locus.nextc = current_nextc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c != '&')
|
if (c != '&')
|
||||||
|
|
Loading…
Reference in New Issue