tar: fix handling of first argument without '-'
authorRon Yorston <rmy@pobox.com>
Tue, 22 Aug 2017 15:33:06 +0000 (16:33 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 23 Aug 2017 10:19:44 +0000 (12:19 +0200)
The following no longer works as expected:

   $ ./busybox tar xfz test.tgz
   tar: can't open 'z': No such file or directory

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
archival/tar.c

index 9a5bcc7febc635591bdd4358a92b65d068de6c22..6cf3508ec98b7bf3ab7fc7d7e84b68dd06c2cf08 100644 (file)
@@ -953,9 +953,6 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
        if (getuid() != 0)
                tar_handle->ah_flags |= ARCHIVE_DONT_RESTORE_PERM;
 
-       /* Prepend '-' to the first argument if required */
-       if (argv[1] && argv[1][0] != '-' && argv[1][0] != '\0')
-               argv[1] = xasprintf("-%s", argv[1]);
 #if ENABLE_DESKTOP
        /* Lie to buildroot when it starts asking stupid questions. */
        if (argv[1] && strcmp(argv[1], "--version") == 0) {
@@ -992,6 +989,9 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
                }
        }
 #endif
+       /* Prepend '-' to the first argument if required */
+       if (argv[1] && argv[1][0] != '-' && argv[1][0] != '\0')
+               argv[1] = xasprintf("-%s", argv[1]);
        opt = GETOPT32(argv, "^"
                "txC:f:Oopvk"
                IF_FEATURE_TAR_CREATE(   "ch"    )