]> git.ipfire.org Git - thirdparty/openwrt.git/commit
fritz-tools: fix out-of-bounds memset in TFFS segment expansion 23763/head
authorHauke Mehrtens <hauke@hauke-m.de>
Fri, 12 Jun 2026 23:17:23 +0000 (01:17 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 15 Jun 2026 22:51:53 +0000 (00:51 +0200)
commit7e7bd602ea8967858267c2a6929f4dbaffe90839
tree3e821ddeafba1ed46eefc4c6a8fe2b3b7360e30e
parente4c35c2eec665f3f74a2b2f587fd2a1324b31841
fritz-tools: fix out-of-bounds memset in TFFS segment expansion

When growing the segment array in find_entry(), the memset() that zeroes
the newly allocated slots computed the destination with redundant sizeof
scaling:

  memset(segments + (num_segments * sizeof(struct tffs_entry_segment)), ...)

segments is a typed pointer, so pointer arithmetic already scales by the
element size. Multiplying the offset by sizeof again advances the
destination by num_segments * sizeof^2 bytes, landing far outside the
realloc()'d buffer and zeroing unrelated heap memory whenever a TFFS
entry spans multiple segments that require array expansion.

Drop the redundant multiplication so the memset targets segments[num_segments].

This is a robustness fix for malformed/corrupt TFFS content; the parser
only reads the on-device nand-tffs MTD partition as root, so it is not
considered security relevant.

Reported-by: @Vasco0x4
Assisted-by: Claude:claude-opus-4-8
Link: https://github.com/openwrt/openwrt/pull/23763
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/utils/fritz-tools/Makefile
package/utils/fritz-tools/src/fritz_tffs_nand_read.c