On Sun, Oct 27, 2013 at 02:15:57PM +0100, Jakub Jelinek wrote:
> On Sun, Oct 27, 2013 at 12:35:24PM +0100, Ondřej Bílka wrote:
> > On Sun, Oct 27, 2013 at 11:51:00AM +0100, Marek Polacek wrote:
> > > Or just wait till the integer overflow detection in ubsan is completed.
> > >
> > As these computations now are done on unsigned type which has behaviour
> > defined as modular arithmetic this would not help. 
> 
> But what is integer overflow on unsigned type?  If you want to add -1
> in unsigned arithmetics, you add very large positive number instead and that
> would overflow, even if it is unlikely it is an error and it is pretty common.
> 

From c standard:

6.2.5 Types
...
9 The range of nonnegative values of a signed integer type is a subrange of the
corresponding unsigned integer type, and the representation of the same value 
in each
type is the same.31) A computation involving unsigned operands can never 
overflow,
because a result that cannot be represented by the resulting unsigned integer 
type is
reduced modulo the number that is one greater than the largest value that can be
represented by the resulting type.


There is no error. My proposion was different, detect overflows only for
size_t which while technically illegal is most likely used in size
calculations and checking overflow would likely prevent a buffer
overflow when it is used.

Reply via email to