summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-09-24 14:31:20 +0800
committersakumisu <[email protected]>2022-09-24 14:31:20 +0800
commit4b632597cb832d72ab592c170a7c3200e0bf58c1 (patch)
treeb56045988430c9927b833103d276671f24b69bd7
parent4109adf61608d571da08c34b0f0bb625f5dc090d (diff)
fix port index overflow
-rw-r--r--core/usbh_core.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/core/usbh_core.c b/core/usbh_core.c
index 1e843318..e2bb4386 100644
--- a/core/usbh_core.c
+++ b/core/usbh_core.c
@@ -681,11 +681,11 @@ struct usbh_hubport *usbh_find_hubport(uint8_t dev_addr)
usb_slist_for_each(hub_list, &hub_class_head)
{
struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list);
- for (int port = 0; port < hub->hub_desc.bNbrPorts; port++) {
- hport = &hub->child[port - 1];
+ for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) {
+ hport = &hub->child[port];
if (hport->connected) {
if (hport->dev_addr == dev_addr) {
- return &hub->child[port - 1];
+ return &hub->child[port];
}
}
}
@@ -701,7 +701,7 @@ void *usbh_find_class_instance(const char *devname)
usb_slist_for_each(hub_list, &hub_class_head)
{
struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list);
- for (int port = 0; port < hub->hub_desc.bNbrPorts; port++) {
+ for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) {
hport = &hub->child[port];
if (hport->connected) {
for (uint8_t itf = 0; itf < hport->config.config_desc.bNumInterfaces; itf++) {
@@ -824,7 +824,7 @@ int lsusb(int argc, char **argv)
{
struct usbh_hub *hub = usb_slist_entry(i, struct usbh_hub, list);
for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) {
- hport = &hub->child[port - 1];
+ hport = &hub->child[port];
if (hport->connected) {
USB_LOG_RAW("/: Hub %02u,VID:PID 0x%04x:0x%04x\r\n",
hub->index,
@@ -850,7 +850,7 @@ int lsusb(int argc, char **argv)
{
struct usbh_hub *hub = usb_slist_entry(i, struct usbh_hub, list);
for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) {
- hport = &hub->child[port - 1];
+ hport = &hub->child[port];
if (hport->connected) {
USB_LOG_RAW("Hub %02u,Port %u,Port addr:0x%02x,VID:PID 0x%04x:0x%04x\r\n",
hub->index,