Package: unrtf Version: 0.21.5-3+deb8u1 Dear Maintainer,
unrtf on Debian Jessie crashes when analyzing the following file (crash.rtf). unrtf is not crashing on Debian Stretch Package (0.21.9-clean-3). Package info: $ dpkg --list Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================================-=====================-=====================-======================================================================= ii unrtf 0.21.5-3+deb8u1 amd64 RTF to other formats converter File info: $ md5sum crash.rtf e025c809c42b784c0b00d2cb2a34b279 crash.rtf $ sha1sum crash.rtf d5de7e21b22399c859083bd28ce32bc4127492e1 crash.rtf $ sha256sum crash.rtf 13a5b726cca07f1ce3ba296c897ccc24ae4fefe278889d3e90386d1495e6d2a6 crash.rtf $ file crash.rtf crash.rtf: Rich Text Format data, version 1, ANSI Crash: $ unrtf crash.rtf <!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <!-- Translation from RTF performed by UnRTF, version 0.21.5 --> <!--font table contains 7 fonts total--> Segmentation fault Trace from crash (gdb with peda plugin): Program received signal SIGSEGV, Segmentation fault. [----------------------------------registers-----------------------------------] RAX: 0x0 RBX: 0x7ffff7dd72a0 --> 0xfbad2a84 RCX: 0xffffffffffffffff RDX: 0x20 (' ') RSI: 0x7ffffffe RDI: 0x69666e6f63206f4e ('No confi') RBP: 0x7fffffffde90 --> 0x613380 --> 0x7ffff7dd72a0 --> 0xfbad2a84 RSP: 0x7fffffffd8c0 --> 0x3 RIP: 0x7ffff7a7bdcc (<_IO_vfprintf_internal+19468>: ) R8 : 0x69666e6f63206f4e ('No confi') R9 : 0x7ffff7a7c99a (<_IO_vfprintf_internal+22490>: ) R10: 0x7ffff7dd56a0 --> 0x0 R11: 0x0 R12: 0x40ccf8 ("%d %s %d ") R13: 0x0 R14: 0x0 R15: 0x7fffffffdea8 --> 0x3000000020 (' ') EFLAGS: 0x10286 (carry PARITY adjust zero SIGN trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x7ffff7a7bdc3 <_IO_vfprintf_internal+19459>: xor eax,eax 0x7ffff7a7bdc5 <_IO_vfprintf_internal+19461>: or rcx,0xffffffffffffffff 0x7ffff7a7bdc9 <_IO_vfprintf_internal+19465>: mov rdi,r8 => 0x7ffff7a7bdcc <_IO_vfprintf_internal+19468>: repnz scas al,BYTE PTR es:[rdi] 0x7ffff7a7bdce <_IO_vfprintf_internal+19470>: mov DWORD PTR [rbp-0x4c8],0x0 0x7ffff7a7bdd8 <_IO_vfprintf_internal+19480>: mov rsi,rcx 0x7ffff7a7bddb <_IO_vfprintf_internal+19483>: not rsi 0x7ffff7a7bdde <_IO_vfprintf_internal+19486>: lea r10,[rsi-0x1] [------------------------------------stack-------------------------------------] 0000| 0x7fffffffd8c0 --> 0x3 0008| 0x7fffffffd8c8 --> 0x65e090 --> 0x65e820 ("<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>\n<html>\n") 0016| 0x7fffffffd8d0 --> 0x7fffffffda20 --> 0x40cc7d ("align_right_begin") 0024| 0x7fffffffd8d8 --> 0x7ffff7aa5907 (<_IO_new_file_xsputn+87>: mov QWORD PTR [rbp+0x28],rax) 0032| 0x7fffffffd8e0 --> 0x7ffff7dd72a0 --> 0xfbad2a84 0040| 0x7fffffffd8e8 --> 0x7fffffffdee0 --> 0x7e3 0048| 0x7fffffffd8f0 --> 0x40cf30 ("creation date: ") 0056| 0x7fffffffd8f8 --> 0xf [------------------------------------------------------------------------------] Legend: code, data, rodata, value Stopped reason: SIGSEGV 0x00007ffff7a7bdcc in _IO_vfprintf_internal (s=<optimized out>, format=<optimized out>, ap=ap@entry=0x7fffffffdea8) at vfprintf.c:1642 1642 vfprintf.c: No such file or directory. Trace from crash (Debian package with patches compiled with Address Sanitizer on another computer): ==20518==ERROR: AddressSanitizer: global-buffer-overflow on address 0x555977f1f8c8 at pc 0x555977f0c113 bp 0x7ffd07589a30 sp 0x7ffd07589a20 READ of size 1 at 0x555977f1f8c8 thread T0 #0 0x555977f0c112 in word_print_core (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x22112) #1 0x555977f0c7bb in word_print_core (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x227bb) #2 0x555977f0cdde in word_print (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x22dde) #3 0x555977f0f9de in main (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x259de) #4 0x7f0240a52b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) #5 0x555977efbdf9 in _start (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x11df9) 0x555977f1f8c8 is located 3 bytes to the right of global variable '*.LC189' defined in 'convert.c' (0x555977f1f8c0) of size 5 '*.LC189' is ascii string 'ansi' 0x555977f1f8c8 is located 56 bytes to the left of global variable '*.LC190' defined in 'convert.c' (0x555977f1f900) of size 8 '*.LC190' is ascii string 'ansicpg' SUMMARY: AddressSanitizer: global-buffer-overflow (/media/cvs/GSM/fuzz/unrtf/jessie/asan/unrtf-0.21.5/src/unrtf+0x22112) in word_print_core Shadow bytes around the buggy address: 0x0aabaefdbec0: 00 01 f9 f9 f9 f9 f9 f9 00 05 f9 f9 f9 f9 f9 f9 0x0aabaefdbed0: 00 07 f9 f9 f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 0x0aabaefdbee0: 00 00 00 00 00 00 00 00 02 f9 f9 f9 f9 f9 f9 f9 0x0aabaefdbef0: 02 f9 f9 f9 f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 0x0aabaefdbf00: 02 f9 f9 f9 f9 f9 f9 f9 00 00 03 f9 f9 f9 f9 f9 =>0x0aabaefdbf10: 02 f9 f9 f9 f9 f9 f9 f9 05[f9]f9 f9 f9 f9 f9 f9 0x0aabaefdbf20: 00 f9 f9 f9 f9 f9 f9 f9 02 f9 f9 f9 f9 f9 f9 f9 0x0aabaefdbf30: 07 f9 f9 f9 f9 f9 f9 f9 04 f9 f9 f9 f9 f9 f9 f9 0x0aabaefdbf40: 00 00 02 f9 f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 0x0aabaefdbf50: 05 f9 f9 f9 f9 f9 f9 f9 03 f9 f9 f9 f9 f9 f9 f9 0x0aabaefdbf60: 03 f9 f9 f9 f9 f9 f9 f9 00 01 f9 f9 f9 f9 f9 f9 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==20518==ABORTING As buffer overflow is considered as a security issue, this crash may be patch regarding the LTS of Debian Jessie. Kind regards, Antoine
crash.rtf
Description: crash.rtf