[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug-diffutils] bug#18857: floating point exception on invalid argument
From: |
Tobias Stoeckmann |
Subject: |
[bug-diffutils] bug#18857: floating point exception on invalid argument |
Date: |
Mon, 27 Oct 2014 21:06:01 +0100 |
User-agent: |
Mutt/1.5.22 (2013-10-16) |
Hi,
on 64 bit systems, an invalid tabsize argument can trigger a floating
point exception:
$ diff --tabsize=9223372036854775808 . .
Floating point exception
Offending line is this one:
intmax_t off = (w + t + GUTTER_WIDTH_MINIMUM) / (2 * t) * t;
The tabsize I supplied is 2^63, multiplying by 2 will be 2^64 which
is too large, so the divisor overflows to 0.
This is a purely cosmetical fix, I don't see the need to adjust anything
except avoiding this special value. I doubt that anyone ever needed
these large numbers.
Tobias
--- diffutils-3.3/src/diff.c~ 2014-10-27 20:54:30.968656876 +0100
+++ diffutils-3.3/src/diff.c 2014-10-27 20:54:41.360708407 +0100
@@ -594,7 +594,7 @@
case TABSIZE_OPTION:
numval = strtoumax (optarg, &numend, 10);
- if (! (0 < numval && numval <= SIZE_MAX) || *numend)
+ if (! (0 < numval && numval <= SIZE_MAX / 2) || *numend)
try_help ("invalid tabsize '%s'", optarg);
if (tabsize != numval)
{
- [bug-diffutils] bug#18857: floating point exception on invalid argument,
Tobias Stoeckmann <=