GNU bug report logs - #7201
unportable integer expression in src/install.c

Previous Next

Package: coreutils;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Tue, 12 Oct 2010 19:37:02 UTC

Severity: normal

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


Message #13 received at 7201-done <at> debbugs.gnu.org (full text, mbox):

From: Jim Meyering <jim <at> meyering.net>
To: 7201-done <at> debbugs.gnu.org
Subject: Re: bug#7201: unportable integer expression in src/install.c
Date: Sun, 17 Apr 2011 10:58:14 +0200
Jim Meyering wrote:

> Paul Eggert wrote:
>> Solaris 10 cc issues this warning:
>>
>> "install.c", line 189: warning: initializer does not fit or is out
>> of range: -61952
>>
>> and indeed the code in question relies on undefined
>> behavior, as it shoehorns what may be a large negative
>> number into a small int variable.  Here's a patch
>> to src/install.c.  Maybe you should remove the "const"
>> while you're at it, as it's not that helpful here?
>>
>> --- src/install.c~  2010-09-27 23:00:50.000000000 -0700
>> +++ src/install.c   2010-10-12 12:35:30.277787068 -0700
>> @@ -186,8 +186,8 @@ have_same_content (int a_fd, int b_fd)
>>  static bool
>>  extra_mode (mode_t input)
>>  {
>> -  const mode_t mask = ~S_IRWXUGO & ~S_IFMT;
>> -  return !! (input & mask);
>> +  const mode_t mask = S_IRWXUGO | S_IFMT;
>> +  return !! (input & ~ mask);
>
> Thanks!  That looks sufficiently safe.
> You're welcome to commit/push that.
> Or I will do it for you tomorrow.

Applied long ago.  Closing.




This bug report was last modified 14 years and 97 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.