Skip to content

Commit 0dee025

Browse files
Fix ubsan warning.
During configuration parsing there was `array-index-out-of-bounds` warning, because we set value in the loop even if index out of range.
1 parent c0845ad commit 0dee025

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

fw/cfg.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,16 @@ typedef struct {
183183
*/
184184
#define TFW_CFG_ENTRY_FOR_EACH_ATTR(e, idx, k, v) \
185185
for ((idx) = 0, (k) = (e)->attrs[0].key, (v) = (e)->attrs[0].val; \
186-
(idx++) < (e)->attr_n; \
187-
(k) = (e)->attrs[(idx)].key, (v) = (e)->attrs[(idx)].val)
186+
(idx) < (e)->attr_n; \
187+
(idx)++, \
188+
(k) = (idx < (e)->attr_n ? (e)->attrs[(idx)].key : NULL), \
189+
(v) = (idx < (e)->attr_n ? (e)->attrs[(idx)].val : NULL))
188190

189191
#define TFW_CFG_ENTRY_FOR_EACH_VAL(e, idx, v) \
190192
for ((idx) = 0, (v) = (e)->vals[0]; \
191193
(idx) < (e)->val_n; \
192-
(v) = (e)->vals[++(idx)])
194+
(idx)++, \
195+
(v) = (idx < (e)->val_n ? (e)->vals[(idx)] : NULL))
193196

194197
#define TFW_CFG_CHECK_NO_ATTRS(spec, entry) \
195198
if ((entry)->attr_n) { \

0 commit comments

Comments
 (0)