Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
libterminfo/tic crash
Greetings,
Recent changes to lib/libterminfo and usr.bin/tic make tic crash on out-of-boundary memory access.
(this is on macOS):
tools.i386/bin/nbtic -Sx src/share/terminfo/terminfo
nbtic(86018,0x1187eedc0) malloc: Incorrect checksum for freed object 0x7fad17473290: probably modified after being freed.
Corrupt value: 0x700000000000ffff
nbtic(86018,0x1187eedc0) malloc: *** set a breakpoint in malloc_error_break to debug
Abort
Backtrace:
frame #10: 0x0000000100002f33 nbtic`_ti_grow_tbuf(tbuf=0x0000000100406e58, len=4) at compile.c:80:10
frame #11: 0x00000001000046e9 nbtic`_ti_compile(cap="\n\tpln@, rs3=\\EwG\\Ee)$<200>, use=wy160,", flags=21) at compile.c:627:9
frame #12: 0x0000000100001a53 nbtic`process_entry(buf=0x00007ffeefbff868, flags=21) at tic.c:181:8
frame #13: 0x00000001000016f4 nbtic`main(argc=3, argv=0x00007ffeefbff900) at tic.c:553:4
This patch fixes the problem:
diff -u -r1.14 compile.c
--- lib/libterminfo/compile.c 13 Mar 2020 15:19:25 -0000 1.14
+++ lib/libterminfo/compile.c 27 Mar 2020 11:42:22 -0000
@@ -625,7 +625,7 @@
if (_ti_find_cap(&tic->nums, 'n', ind) != NULL)
continue;
if (_ti_grow_tbuf(&tic->nums,
- sizeof(uint16_t) * 2) == NULL)
+ sizeof(uint16_t) + sizeof(uint32_t)) == NULL)
goto error;
le16enc(tic->nums.buf + tic->nums.bufpos,
(uint16_t)ind);
OK to commit? :)
Kind regards,
Adam
Home |
Main Index |
Thread Index |
Old Index