On 13.02.2020 14:13, Joerg Sonnenberger wrote:
> On Thu, Feb 13, 2020 at 02:05:12PM +0100, Kamil Rytarowski wrote:
>> On 13.02.2020 00:58, Joerg Sonnenberger wrote:
>>> On Mon, Feb 10, 2020 at 04:45:35PM +0000, Roy Marples wrote:
>>>> On 09/02/2020 19:21, Joerg Sonnenberger wrote:
>>>>> On Sat, Feb 08, 2020 at 12:17:16PM +0000, Santhosh Raju wrote:
>>>>>> Module Name:     src
>>>>>> Committed By:    fox
>>>>>> Date:            Sat Feb  8 12:17:16 UTC 2020
>>>>>>
>>>>>> Modified Files:
>>>>>>  src/external/bsd/dhcpcd/dist/src: dhcp.c
>>>>>>
>>>>>> Log Message:
>>>>>> external/bsd/dhcpcd: Fix a -Wconversion warning.
>>>>>>
>>>>>> Type cast uint16_t to size_t to prevent implicit type conversion.
>>>>>
>>>>> Seriously? That should not warn and no cast should be used either.
>>>>
>>>> What fix would you recommend then?
>>>
>>> Disable the warning in GCC and fill an upstream PR against it. A
>>> conversion from uint16_t to size_t is value preserving by definition of
>>> the ISO C platform limits. It should never create a warning.
>>>
>>> Joerg
>>>
>>
>> If we disable warnings in our core software in non-trivial source file
>> for over 4000 lines we will mute more serious issues in a pretty
>> sensitive file. We fixed this warning in upstream dhcpcd.
> 
> The fix is IMO significantly worse as it actually creates technical
> debt. Frankly, I would go so far and say that this should be reverted.
> This warning seems to be pretty fundamentally broken by design if the
> analysis so far is correct.
> 
> Joerg
> 

Feel free to fix GCC.

dhcpcd already uses this explicit cast style, e.g. here:

static void *
get_udp_data(void *packet, size_t *len)
{
        const struct ip *ip = packet;
        size_t ip_hl = (size_t)ip->ip_hl * 4;
        char *p = packet;

        p += ip_hl + sizeof(struct udphdr);
        *len = (size_t)ntohs(ip->ip_len) - sizeof(struct udphdr) - ip_hl;
        return p;
}

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to