Package: t1utils Version: 1.39-2The eexec_line() fuctions runs strstr(3) on a string that is not always null-terminated, which makes it read past the allocated buffer.
To reproduce, rebuild the package with DEB_BUILD_OPTIONS='sanitize=+address nostrip', and run:
$ t1disasm bad.pfb t1disasm: bad.pfb corrupted: block short by 808464427 bytes at position 6 t1disasm: bad.pfb corrupted: no end-of-file marker ================================================================= ==5796==ERROR: AddressSanitizer: heap-buffer-overflow on address 0xf4a03b80 at pc 0xf716d6d9 bp 0xffa13e58 sp 0xffa13a30 READ of size 1025 at 0xf4a03b80 thread T0 #0 0xf716d6d8 (/usr/lib/i386-linux-gnu/libasan.so.3+0x3a6d8) #1 0xf716daf8 in __interceptor_strstr (/usr/lib/i386-linux-gnu/libasan.so.3+0x3aaf8) #2 0x56618662 in set_lenIV t1asmhelp.h:13 #3 0x56618662 in eexec_line t1disasm.c:421 #4 0x56619f25 in disasm_output_ascii t1disasm.c:452 #5 0x5661a38d in disasm_output_end t1disasm.c:570 #6 0x56616f9c in process_pfb t1lib.c:318 #7 0x56609bbd in main t1disasm.c:733 #8 0xf6f94275 in __libc_start_main (/lib/i386-linux-gnu/libc.so.6+0x18275) #9 0x56609da5 (/usr/bin/t1disasm+0x2da5) 0xf4a03b80 is located 0 bytes to the right of 1024-byte region [0xf4a03780,0xf4a03b80) allocated by thread T0 here: #0 0xf71f11f4 in malloc (/usr/lib/i386-linux-gnu/libasan.so.3+0xbe1f4) #1 0x5661803a in append_save t1disasm.c:291 #2 0x5661758e in process_pfb t1lib.c:297 #3 0x56609bbd in main t1disasm.c:733 #4 0xf6f94275 in __libc_start_main (/lib/i386-linux-gnu/libc.so.6+0x18275) -- Jakub Wilk
bad.pfb
Description: application/font