emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#18857: closed (floating point exception on invalid


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#18857: closed (floating point exception on invalid argument)
Date: Tue, 28 Oct 2014 05:26:02 +0000

Your message dated Mon, 27 Oct 2014 22:24:48 -0700
with message-id <address@hidden>
and subject line Re: [bug-diffutils] bug#18857: floating point exception on 
invalid argument
has caused the debbugs.gnu.org bug report #18857,
regarding floating point exception on invalid argument
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
18857: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18857
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 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)
            {



--- End Message ---
--- Begin Message --- Subject: Re: [bug-diffutils] bug#18857: floating point exception on invalid argument Date: Mon, 27 Oct 2014 22:24:48 -0700 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
Tobias Stoeckmann wrote:
I don't see the need to adjust anything
except avoiding this special value.  I doubt that anyone ever needed
these large numbers.

Yes, it's hard to imagine anyone needing a tabsize that large. Still, the GNU policy is to avoid unnecessary limits, so it's better to make the limit as large as easily possible, which here would be SIZE_MAX - GUTTER_WIDTH_MINIMUM. Also, I see there are other ways the nearby code can overflow. Plus, we should put in a test case for this bug. So I installed the attached patch, which should address these issues. Thanks for reporting the problem.

Attachment: 0001-diff-fix-integer-overflow-problem-with-tabsize.patch
Description: Text document


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]