Commit 3a471e32 authored by Johann Fischer's avatar Johann Fischer Committed by Kumar Gala
Browse files

subsys: usb: stall if there is no data buffer



Return a STALL in the setup or data stage if there is no data buffer.

Signed-off-by: default avatarJohann Fischer <j.fischer@phytec.de>
parent 1b577524
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -271,6 +271,13 @@ static void usb_handle_control_transfer(u8_t ep,
		/* Defaults for data pointer and residue */
		type = REQTYPE_GET_TYPE(setup->bmRequestType);
		usb_dev.data_buf = usb_dev.data_store[type];
		if (!usb_dev.data_buf) {
			SYS_LOG_DBG("buffer not available\n");
			usb_dc_ep_set_stall(USB_CONTROL_OUT_EP0);
			usb_dc_ep_set_stall(USB_CONTROL_IN_EP0);
			return;
		}

		usb_dev.data_buf_residue = setup->wLength;
		usb_dev.data_buf_len = setup->wLength;

@@ -310,6 +317,7 @@ static void usb_handle_control_transfer(u8_t ep,
		    usb_dev.data_buf_residue, &chunk) < 0) {
			SYS_LOG_DBG("Read DATA Packet failed\n");
			usb_dc_ep_set_stall(USB_CONTROL_IN_EP0);
			usb_dc_ep_set_stall(USB_CONTROL_OUT_EP0);
			return;
		}