gcc 4.3 compiler warning, possible off-by-one error?

Pavel Roskin proski
Wed Jun 4 09:55:24 PDT 2008


On Wed, 2008-06-04 at 19:01 +0300, Jouni Malinen wrote:

> The current code is actually correct from functional view point, i.e.,
> WPA_PUT_BE32 is supposed to "overflow" the 3-octet oui field and
> continue to the oui_type. In other words, your patch is not correct way
> of getting rid of the warning. One way to do this would be to change the
> oui to 4-octet field and remove oui_type, but that is not exactly
> correct either since OUI is 24 bits. The other option would be to not
> use WPA_{PUT,GET}_BE32 here, but that adds more complexity to the code.
> That could be hidden in the macro, but the binary size would still be a
> bit larger..

"struct" might help:

    struct oui {
        u8 oui_id[3];
        u8 oui_type;
    };

When accessing 4 bytes, refer to (u32)oui, when writing 3 bytes, refer
to oui_id.  Maybe a union around this would be needed to suppress some
warnings, but I'll rather avoid it if possible.

-- 
Regards,
Pavel Roskin



More information about the Hostap mailing list