• Andrej Shadura's avatar
    HID: u2fzero: clarify error check and length calculations · b7abf78b
    Andrej Shadura authored
    The previous commit fixed handling of incomplete packets but broke error
    handling: offsetof returns an unsigned value (size_t), but when compared
    against the signed return value, the return value is interpreted as if
    it were unsigned, so negative return values are never less than the
    offset.
    
    To make the code easier to read, calculate the minimal packet length
    once and separately, and assign it to a signed int variable to eliminate
    unsigned math and the need for type casts. It then becomes immediately
    obvious how the actual data length is calculated and why the return
    value cannot be less than the minimal length.
    
    Fixes: 22d65765 ("HID: u2fzero: ignore incomplete packets without data")
    Fixes: 42337b9d ("HID: add driver for U2F Zero built-in LED and RNG")
    Signed-off-by: default avatarAndrej Shadura <andrew.shadura@collabora.co.uk>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    b7abf78b
hid-u2fzero.c 8 KB