summaryrefslogtreecommitdiff
path: root/src/tusb.c
diff options
context:
space:
mode:
authorGuavTek <[email protected]>2024-10-18 18:05:58 +0200
committerGuavTek <[email protected]>2024-10-18 18:05:58 +0200
commitebcd7067c9b86b8df8a3f9cf07ba76edd9e7440c (patch)
tree0254e10210e3ff72e5028eaaa9546d08e9cc252a /src/tusb.c
parent8b1e40c3e2447de5b4a86bbcdcc0344946a4793d (diff)
Recover host enumeration from zero length descriptors
Diffstat (limited to 'src/tusb.c')
-rw-r--r--src/tusb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/tusb.c b/src/tusb.c
index e6f8055b7..799ffdce9 100644
--- a/src/tusb.c
+++ b/src/tusb.c
@@ -255,6 +255,10 @@ uint16_t tu_desc_get_interface_total_len(tusb_desc_interface_t const* desc_itf,
((tusb_desc_interface_t const*) p_desc)->bAlternateSetting == 0) {
break;
}
+ if (tu_desc_len(p_desc) == 0) {
+ // Escape infinite loop
+ break;
+ }
len += tu_desc_len(p_desc);
p_desc = tu_desc_next(p_desc);