diff options
Diffstat (limited to 'archival/bbunzip.c')
-rw-r--r-- | archival/bbunzip.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/archival/bbunzip.c b/archival/bbunzip.c index b243afb2e..c1259ac46 100644 --- a/archival/bbunzip.c +++ b/archival/bbunzip.c | |||
@@ -373,12 +373,21 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv) | |||
373 | static | 373 | static |
374 | IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(unpack_info_t *info UNUSED_PARAM) | 374 | IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(unpack_info_t *info UNUSED_PARAM) |
375 | { | 375 | { |
376 | struct { | ||
377 | uint32_t v1; | ||
378 | uint16_t v2; | ||
379 | } magic; | ||
380 | xread(STDIN_FILENO, &magic, 6); | ||
381 | if (magic.v1 != XZ_MAGIC1a || magic.v2 != XZ_MAGIC2a) { | ||
382 | bb_error_msg("invalid magic"); | ||
383 | return -1; | ||
384 | } | ||
376 | return unpack_xz_stream(STDIN_FILENO, STDOUT_FILENO); | 385 | return unpack_xz_stream(STDIN_FILENO, STDOUT_FILENO); |
377 | } | 386 | } |
378 | int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 387 | int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
379 | int unxz_main(int argc UNUSED_PARAM, char **argv) | 388 | int unxz_main(int argc UNUSED_PARAM, char **argv) |
380 | { | 389 | { |
381 | int opts = getopt32(argv, "cfvdt"); | 390 | IF_XZ(int opts =) getopt32(argv, "cfvdt"); |
382 | # if ENABLE_XZ | 391 | # if ENABLE_XZ |
383 | /* xz without -d or -t? */ | 392 | /* xz without -d or -t? */ |
384 | if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST))) | 393 | if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST))) |