diff --git a/lib/usb/usb_standard.c b/lib/usb/usb_standard.c index 02cef621..5e851625 100644 --- a/lib/usb/usb_standard.c +++ b/lib/usb/usb_standard.c @@ -312,9 +312,13 @@ static int usb_standard_get_configuration(usbd_device *usbd_dev, if (*len > 1) { *len = 1; } - const struct usb_config_descriptor *cfg = - &usbd_dev->config[usbd_dev->current_config - 1]; - (*buf)[0] = cfg->bConfigurationValue; + if (usbd_dev->current_config > 0) { + const struct usb_config_descriptor *cfg = + &usbd_dev->config[usbd_dev->current_config - 1]; + (*buf)[0] = cfg->bConfigurationValue; + } else { + (*buf)[0] = 0; + } return 1; }