• A
    usb-desc: fix user trigerrable segfaults (!config) · 8db36e9d
    Alon Levy 提交于
    Check for dev->config being NULL in two places:
     USB_REQ_GET_CONFIGURATION and USB_REQ_GET_STATUS.
    
    The behavior of USB_REQ_GET_STATUS is unspecified in the Default state,
    that corresponds to dev->config being NULL (it defaults to NULL and is
    reset whenever a SET_CONFIGURATION with value 0, or attachment). I
    implemented it to correspond with the state before
    ed5a83dd, the commit moving SET_STATUS
    to usb-desc; if dev->config is not set we return whatever is in the
    first configuration.
    
    The behavior of USB_REQ_GET_CONFIGURATION is also undefined before any
    SET_CONFIGURATION, but here we just return 0 (same as specified for the
    Address state).
    
    A win7 guest failed to initialize the device before this patch,
    segfaulting when GET_STATUS was called with dev->config == NULL. With
    this patch the passthrough device still doesn't work but the failure is
    unrelated.
    Signed-off-by: NAlon Levy <alevy@redhat.com>
    Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
    8db36e9d
usb-desc.c 15.7 KB