unarchive: fix possible segmentation fault in deb_extract()
authorJo-Philipp Wich <jo@mein.io>
Tue, 28 Feb 2017 23:46:39 +0000 (00:46 +0100)
committerJo-Philipp Wich <jo@mein.io>
Tue, 28 Feb 2017 23:52:41 +0000 (00:52 +0100)
commit19070b6c1a9718bf7ceaa61c48f328cabf1d5ca7
tree24072d794088c9b219b9dacb073e2e7f7896fcb8
parent758527e6e714fa077445a6f9f12b5e0a295d2af8
unarchive: fix possible segmentation fault in deb_extract()

When a not existing or unreachable file path is passed to deb_extract(),
the wfopen() call fails, causing a jump to the cleanup: label which leads
to a call to gzip_close() on the tar_outer structure.

The tar_outer structure however contains uninitialized memory at this point,
causing gzip_close() to operate on garbage data. Depending on the nature of
the unitialized memory, this might lead to all sorts of issues, e.g. freeing
of not allocated memory or invoking fclose() on garbage pointers.

Solve this problem by initializing the tar_outer and tar_inner structures
right at the declaration.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
libbb/unarchive.c