Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <068fbfc4-8e72-4aba-a708-96a63fbd1e06@brad-house.com>
Date: Thu, 18 Jul 2024 15:19:57 -0400
From: Brad House <brad@...d-house.com>
To: musl@...ts.openwall.com
Subject: Re: [PATCH 1/1] FD_SET() and FD_ISSET() warn on
 -Wsign-conversion

On 7/18/24 12:25 PM, Rich Felker wrote:

>> We really can't wrap FD_SET/FD_ISSET in c-ares, since wrapping it
>> would require the library to know the internals about the operations
>> of the fd_set for each and every platform, which could change over
>> time if there are ABI changes.
>>
>> I understand your concern regarding casting away real programming
>> errors by accident.  The only solution to that I see would be to
>> turn the macros into functions, POSIX says either are valid:https://pubs.opengroup.org/onlinepubs/009604499/basedefs/sys/select.h.html
>>
>> Of course, that would introduce a backwards-incompatible ABI change
>> where an application compiled against a newer version of musl
>> wouldn't run on an older version.  I don't know what your ABI
>> policies look like to know if that's acceptable.
> That's not acceptable, but I think you're confusing "functions" with
> "functions with external linkage". There's no reason you can't do
> functions with static linkage. However there is probably also some
> fancy solution with the ternary operator that avoids the
> type-unsafety. I haven't thought through the pros and cons of either
> option.

You are right, replacing a complex macro with a static inline function 
in a header might be acceptable and keep full ABI compatibility.  That 
said, I've always considered static inlines in headers to be a bad 
practice in general, but there are always exceptions to the rule.

You'd also have the ability to do bounds checking with a function, such 
(d < 0 || d >= FD_SETSIZE) which would be good for preventing out of 
bounds reads and writes.

-Brad

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.