]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
nl: fix integer-overflow bug
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 3 Oct 2019 19:37:12 +0000 (12:37 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 3 Oct 2019 19:41:51 +0000 (12:41 -0700)
Problem reported by Roland Illig (Bug#37585)
* src/nl.c (print_lineno): Don’t rely on undefined behavior when
checking for integer overflow.

src/nl.c

index 43092b4fe1623c7c4de5926fd36f9f24fbc141ef..d85408c8cf03b249e91bce349f06c465116c7ce6 100644 (file)
--- a/src/nl.c
+++ b/src/nl.c
@@ -275,14 +275,10 @@ build_type_arg (char const **typep,
 static void
 print_lineno (void)
 {
-  intmax_t next_line_no;
-
   printf (lineno_format, lineno_width, line_no, separator_str);
 
-  next_line_no = line_no + page_incr;
-  if (next_line_no < line_no)
+  if (INT_ADD_WRAPV (line_no, page_incr, &line_no))
     die (EXIT_FAILURE, 0, _("line number overflow"));
-  line_no = next_line_no;
 }
 
 /* Switch to a header section. */