From: Lasse Collin Date: Fri, 10 Jul 2009 08:33:21 +0000 (+0300) Subject: Look for full command names instead of substrings X-Git-Tag: upstream/5.1.3~492 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eed9953732b801f6c97317fb3160445a8754180b;p=platform%2Fupstream%2Fxz.git Look for full command names instead of substrings like "un", "cat", and "lz" when determining if xz is run as unxz, xzcat, lzma, unlzma, or lzcat. This is to ensure that if xz is renamed (e.g. via --program-transform-name), it doesn't so easily work in wrong mode. --- diff --git a/src/xz/args.c b/src/xz/args.c index 97b2244..8d5d33c 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -465,19 +465,23 @@ args_parse(args_info *args, int argc, char **argv) // NOTE: It's possible that name[0] is now '\0' if argv[0] // is weird, but it doesn't matter here. - // If the command name contains "lz", - // it implies --format=lzma. - if (strstr(name, "lz") != NULL) + // Look for full command names instead of substrings like + // "un", "cat", and "lz" to reduce possibility of false + // positives when the programs have been renamed. + if (strstr(name, "xzcat") != NULL) { + opt_mode = MODE_DECOMPRESS; + opt_stdout = true; + } else if (strstr(name, "unxz") != NULL) { + opt_mode = MODE_DECOMPRESS; + } else if (strstr(name, "lzcat") != NULL) { opt_format = FORMAT_LZMA; - - // Operation mode - if (strstr(name, "cat") != NULL) { - // Imply --decompress --stdout opt_mode = MODE_DECOMPRESS; opt_stdout = true; - } else if (strstr(name, "un") != NULL) { - // Imply --decompress + } else if (strstr(name, "unlzma") != NULL) { + opt_format = FORMAT_LZMA; opt_mode = MODE_DECOMPRESS; + } else if (strstr(name, "lzma") != NULL) { + opt_format = FORMAT_LZMA; } }