When I try to run cabextract against a certain CAB file I get the following output (from cabextract 1.6 installed via the Ubuntu 17.10 apt-get repo):
cabextract /tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8
/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8: CAB: Folder record 0
/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8: CAB: Folder offset: 71
/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8: CAB: Folder compression method: 1
/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8: CAB: Recorded folders: 1
CAB: File record 0
CAB: File name: XXXXXX*exe
CAB: File offset: 0
CAB: File folder index: 4294967295
CAB: File attribs: 0x20
CAB: * file modified since last backup
CAB: Recorded files: 1
/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8: can't find (null)
Extracting cabinet: /tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8
Segmentation fault (core dumped)
I built from source and confirmed that the issue still occurs. Here is the gdb output related to the crash:
(gdb) run
Starting program: /home/zelda/workspace/libmspack/cabextract/cabextract /tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8
Program received signal SIGSEGV, Segmentation fault.
__gconv (cd=0x0, inbuf=inbuf@entry=0x0, inbufend=inbufend@entry=0x0, outbuf=outbuf@entry=0x0,
outbufend=outbufend@entry=0x0, irreversible=irreversible@entry=0x7fffffffda30) at gconv.c:42
42 gconv.c: No such file or directory.
(gdb) bt
#0 __gconv (cd=0x0, inbuf=inbuf@entry=0x0, inbufend=inbufend@entry=0x0, outbuf=outbuf@entry=0x0,
outbufend=outbufend@entry=0x0, irreversible=irreversible@entry=0x7fffffffda30) at gconv.c:42
#1 0x00007ffff7a16b61 in iconv (cd=<optimized out>, inbuf=0x0, inbytesleft=0x0, outbuf=0x0,
outbytesleft=0x0) at iconv.c:42
#2 0x0000555555555ddf in convert_filename (name=<optimized out>) at src/cabextract.c:1004
#3 convert_filenames (files=<optimized out>) at src/cabextract.c:1025
#4 process_cabinet (
basename=0x7fffffffe13a "/tmp/97f3c838aa94567ca24d15f810a6d1c116d7b971cf2df82188ac4f9ea0a0d9a8")
at src/cabextract.c:483
#5 main (argc=2, argv=0x7fffffffdd58) at src/cabextract.c:412
(gdb) disassemble
Dump of assembler code for function __gconv:
0x00007ffff7a170b0 <+0>: cmp rdi,0xffffffffffffffff
0x00007ffff7a170b4 <+4>: je 0x7ffff7a171e8 <__gconv+312>
0x00007ffff7a170ba <+10>: push r15
0x00007ffff7a170bc <+12>: push r14
0x00007ffff7a170be <+14>: mov r15,rdi
0x00007ffff7a170c1 <+17>: push r13
0x00007ffff7a170c3 <+19>: push r12
0x00007ffff7a170c5 <+21>: mov r14,r9
0x00007ffff7a170c8 <+24>: push rbp
0x00007ffff7a170c9 <+25>: push rbx
0x00007ffff7a170ca <+26>: mov r12,rdx
0x00007ffff7a170cd <+29>: mov rbp,rsi
0x00007ffff7a170d0 <+32>: sub rsp,0x28
=> 0x00007ffff7a170d4 <+36>: mov rax,QWORD PTR [rdi]
(gdb) info registers
rax 0x0 0
rbx 0x555555765c30 93824994401328
rcx 0x0 0
rdx 0x0 0
rsi 0x0 0
rdi 0x0 0
rbp 0x0 0x0
rsp 0x7fffffffd9d0 0x7fffffffd9d0
r8 0x0 0
r9 0x7fffffffda30 140737488345648
r10 0xffffffffffffffb0 -80
r11 0x7ffff7dcfc78 140737351842936
r12 0x0 0
r13 0x0 0
r14 0x7fffffffda30 140737488345648
r15 0x0 0
rip 0x7ffff7a170d4 0x7ffff7a170d4 <__gconv+36>
The contained file can be extracted successfully on Windows. I'll email you the offending CAB file.