[PATCH v2 1/2] firewire: Fix out-of-bounds access in CSR iterator
From: Sreeraj S Kurup
Date: Tue Nov 03 2026 - 10:46:05 EST
The fw_csr_iterator_next() function reads ci->p before
checking if it has reached the end.
This can cause an out-of-bounds read when the iterator
has no more entries.
Check the iterator position before reading the entry.
Move the pointer forward only after reading a valid entry.
Signed-off-by: Sreeraj S Kurup <sreekuttan2156239@xxxxxxxxx>
---
drivers/firewire/core-device.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c
index a68100d3da0b..36667841ca3c 100644
--- a/drivers/firewire/core-device.c
+++ b/drivers/firewire/core-device.c
@@ -40,10 +40,14 @@ EXPORT_SYMBOL(fw_csr_iterator_init);
int fw_csr_iterator_next(struct fw_csr_iterator *ci, int *key, int *value)
{
+ if (ci->p >= ci->end)
+ return 0;
+
*key = *ci->p >> 24;
*value = *ci->p & 0xffffff;
- return ci->p++ < ci->end;
+ ci->p++;
+ return 1;
}
EXPORT_SYMBOL(fw_csr_iterator_next);
--
2.55.0