X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=inline;f=src%2Ftar.c;h=10ac93c699a894620baf8c372d88724f1eb8a900;hb=562d543b2dda9c6d8d6a2995fb9127f5bae58fb4;hp=10224a9d4bdf21e6f62b9d1b3fcbef8d7e24c315;hpb=89a1608bd4f9b344e4ed7c4194d61f4a35061540;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index 10224a9..10ac93c 100644 --- a/src/tar.c +++ b/src/tar.c @@ -1,5 +1,5 @@ /* A tar (tape archiver) program. - Copyright (C) 1988, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. + Copyright (C) 1988, 92,93,94,95,96,97, 1999 Free Software Foundation, Inc. Written by John Gilmore, starting 1985-08-25. This program is free software; you can redistribute it and/or modify it @@ -537,11 +537,13 @@ decode_options (int argc, char *const *argv) *out++ = xstrdup (buffer); cursor = strchr (OPTION_STRING, *letter); if (cursor && cursor[1] == ':') - if (in < argv + argc) - *out++ = *in++; - else - USAGE_ERROR ((0, 0, _("Old option `%c' requires an argument."), - *letter)); + { + if (in < argv + argc) + *out++ = *in++; + else + USAGE_ERROR ((0, 0, _("Old option `%c' requires an argument."), + *letter)); + } } /* Copy all remaining options. */ @@ -850,7 +852,8 @@ decode_options (int argc, char *const *argv) break; case GROUP_OPTION: - if (!gname_to_gid (optarg, &group_option)) + if (! (strlen (optarg) < GNAME_FIELD_SIZE + && gname_to_gid (optarg, &group_option))) { uintmax_t g; if (!check_decimal (optarg, &g) || g != (gid_t) g) @@ -879,7 +882,8 @@ decode_options (int argc, char *const *argv) break; case OWNER_OPTION: - if (!uname_to_uid (optarg, &owner_option)) + if (! (strlen (optarg) < UNAME_FIELD_SIZE + && uname_to_uid (optarg, &owner_option))) { uintmax_t u; if (!check_decimal (optarg, &u) || u != (uid_t) u)