From f36c78a4872e5b8fc1a2334c6ed71371a642deb8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 23 Jul 2008 20:12:12 +0000 Subject: * mkgroup.c (main): Fix test for duplicate domain/machine request. * mkpasswd.c (main): Ditto. --- winsup/utils/mkpasswd.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'winsup/utils/mkpasswd.c') diff --git a/winsup/utils/mkpasswd.c b/winsup/utils/mkpasswd.c index 19d2291a9..546ba24cc 100644 --- a/winsup/utils/mkpasswd.c +++ b/winsup/utils/mkpasswd.c @@ -725,12 +725,22 @@ main (int argc, char **argv) "domains and machines.\n", __progname); return 1; } + domlist[print_domlist].domain = (c == 'd' || c == 'D'); opt = optarg ?: argv[optind] && argv[optind][0] != '-' ? argv[optind] : NULL; for (i = 0; i < print_domlist; ++i) - if ((!domlist[i].str && !opt) - || (domlist[i].str && opt && !strcmp (domlist[i].str, opt))) - goto skip; + if (domlist[i].domain == domlist[print_domlist].domain + && ((!domlist[i].str && !opt) + || (domlist[i].str && opt + && (off = strlen (domlist[i].str)) + && !strncmp (domlist[i].str, opt, off) + && (!opt[off] || opt[off] == ',')))) + { + fprintf (stderr, "%s: Duplicate %s '%s'. Skipping...\n", + __progname, domlist[i].domain ? "domain" : "machine", + domlist[i].str); + goto skip; + } domlist[print_domlist].str = opt; domlist[print_domlist].id_offset = ULONG_MAX; if (opt && (p = strchr (opt, ','))) @@ -746,7 +756,6 @@ main (int argc, char **argv) } *p = '\0'; } - domlist[print_domlist].domain = (c == 'd' || c == 'D'); domlist[print_domlist++].with_dom = (c == 'D' || c == 'L'); skip: break; -- cgit v1.2.3