• Guus Sliepen's avatar
    USB: usbtmc: sanity checks for DEV_DEP_MSG_IN urbs · 665d7662
    Guus Sliepen authored
    According to the specifications, an instrument should not return more data in a
    DEV_DEP_MSG_IN urb than requested.  However, some instruments can send more
    than requested. This could cause the kernel to write the extra data past the
    end of the buffer provided by read().
    
    Fix this by checking that the value of the TranserSize field is not larger than
    the urb itself and not larger than the size of the userspace buffer. Also
    correctly decrement the remaining size of the buffer when userspace read()s
    more than USBTMC_SIZE_IOBUFFER.
    Signed-off-by: default avatarGuus Sliepen <guus@sliepen.org>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    665d7662
usbtmc.c 27.2 KB