From: Marek Polacek Date: Sun, 17 Aug 2014 16:19:43 +0000 (+0000) Subject: re PR c/62059 (signed integer overflow in diagnostic.c adjust_line) X-Git-Tag: releases/gcc-5.1.0~5433 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=544c27ba1068e93b93baa526115543384aa19e12;p=thirdparty%2Fgcc.git re PR c/62059 (signed integer overflow in diagnostic.c adjust_line) PR c/62059 * diagnostic.c (adjust_line): Add gcc_checking_assert. (diagnostic_show_locus): Don't print caret diagnostic if a column is larger than the line_width. Co-Authored-By: Manuel López-Ibáñez From-SVN: r214074 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 98c59d4c7153..0850165611c8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-08-17 Marek Polacek + Manuel López-Ibáñez + + PR c/62059 + * diagnostic.c (adjust_line): Add gcc_checking_assert. + (diagnostic_show_locus): Don't print caret diagnostic + if a column is larger than the line_width. + 2014-08-17 Roman Gareev * common.opt: Make the ISL AST generator to be the main code generator diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index b457e5aa2d9d..2226821bc493 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -268,6 +268,7 @@ adjust_line (const char *line, int line_width, int right_margin = 10; int column = *column_p; + gcc_checking_assert (line_width >= column); right_margin = MIN (line_width - column, right_margin); right_margin = max_width - right_margin; if (line_width >= max_width && column > right_margin) @@ -300,7 +301,7 @@ diagnostic_show_locus (diagnostic_context * context, context->last_location = diagnostic->location; s = expand_location_to_spelling_point (diagnostic->location); line = location_get_source_line (s, &line_width); - if (line == NULL) + if (line == NULL || s.column > line_width) return; max_width = context->caret_max_width;