Unshield aborts while testing this (slightly corrupted) archive: $ unshield t data1.cab Aborted I would expect it to print an explanatory error message and exit normally with non-zero exit code instead. Backtrace: #0 0xf7fdc425 in __kernel_vsyscall () #1 0xf7e19307 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #2 0xf7e1a9c3 in __GI_abort () at abort.c:89 #3 0xf7fb5794 in unshield_component_new (header=0x804dfd0, offset=646) at component.c:54 #4 0xf7fb8eff in unshield_header_get_components (header=0x804dfd0) at libunshield.c:155 #5 0xf7fb942d in unshield_read_headers (unshield=0x804dfb0, version=-1) at libunshield.c:309 #6 0xf7fb95db in unshield_open_force_version (filename=0xffffd9c2 "data1.cab", version=-1) at libunshield.c:361 #7 0x08049db1 in main (argc=3, argv=0xffffd804) at unshield.c:574 This bug was found using American fuzzy lop: https://packages.debian.org/experimental/afl