mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: Markus Wichmann <nullplan@gmx.net>
Cc: musl@lists.openwall.com
Subject: Re: [musl] Re: [BUG] ioctl: overflow in implicit constant conversion
Date: Tue, 21 Feb 2023 22:17:31 -0500	[thread overview]
Message-ID: <20230222031730.GB4163@brightrain.aerifal.cx> (raw)
In-Reply-To: <20230221160455.GF1903@voyager>

On Tue, Feb 21, 2023 at 05:04:55PM +0100, Markus Wichmann wrote:
> On Mon, Feb 20, 2023 at 09:26:05PM -0800, Ralph Little wrote:
> > Hi,
> > I have been picking up some old pending issues related to the SANE project.
> > One of our CI builds is on Alpine and it is generating warnings for ioctl()
> > calls from the musl library:
> >
> > |error: overflow in conversion from 'long unsigned int' to 'int' changes
> > value from '2147577985' to '-2147389311' [-Werror=overflow]
> > |
> > ||ioctl (fd, PPRSTATUS, &status);
> >
> > ||I see that Olaf Meeuwissen raised this issue a couple of years ago and the
> > discussion petered out somewhat and I don't believe that the issue was ever
> > really resolved:
> >
> > https://www.openwall.com/lists/musl/2020/01/20/2
> >
> > Is there any possibility that this could be addressed in the near future?
> > I see that Alpine have closed their issue and are not interested in patching
> > their downstream musl:
> >
> > https://gitlab.alpinelinux.org/alpine/aports/-/issues/7580#note_287168
> >
> > Cheers,
> > Ralph Little
> >
> >
> >
> >
> >
> 
> So, I had a look at it. As far as I can tell, the issue is that musl
> declares ioctl()'s second argument to be an int. Together with the other
> defintions, this means that any _IOC_READ constant will overflow and
> generate those warnings. Also, this is technically undefined behavior,
> as value bits are shifted into the sign bit of a signed integer.

Unless you're seeing something I'm not, there's no UB. The shifts take
place on the unsigned type, and the conversion from unsigned to signed
is implementation-defined, not undefined. The implementation-defined
definition relevant to us is modular reduction.

I'm not sure if there's anything reasonable that can be done here on
our side to be more friendly while still conformant, but getting rid
of -Werror=overflow (which is treating well-defined code as an error)
will solve the problem.

Rich

  parent reply	other threads:[~2023-02-22  3:17 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-21  5:26 Ralph Little
2023-02-21 16:04 ` Markus Wichmann
2023-02-21 16:42   ` Florian Weimer
2023-02-21 16:53     ` alice
2023-02-21 16:57   ` Jeffrey Walton
2023-02-21 18:25     ` Ralph Little
2023-02-21 21:28     ` Markus Wichmann
2023-02-22  6:33       ` NRK
2023-02-22  3:17   ` Rich Felker [this message]
2023-02-22  4:23     ` Markus Wichmann
2023-02-22 15:53       ` Rich Felker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230222031730.GB4163@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    --cc=nullplan@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).