]> granicus.if.org Git - shadow/commitdiff
Validate that two of the -L, -p, and -U options are not used at the same
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 17 Nov 2007 14:33:26 +0000 (14:33 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 17 Nov 2007 14:33:26 +0000 (14:33 +0000)
time after the parsing of options. -U used to be allowed after -p or -L,
but not before.

ChangeLog
src/usermod.c

index 5e24ffc83d99f506aa1068b86a3e692afa32dc14..18bd0e00b30db79176c8d95ae661b5afade5ade1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,12 @@
 2007-11-17  Nicolas François  <nicolas.francois@centraliens.net>
 
-       * src/usermod.c: Make usermod -d and -m work independant of the
+       * src/usermod.c: Validate that two of the -L, -p, and -U options
+       are not used at the same time after the parsing of options. -U
+       used to be allowed after -p or -L, but not before.
+
+2007-11-17  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/usermod.c: Make usermod -d and -m work independent of the
        argument order. Thanks to Justin Pryzby <jpryzby+d@quoininc.com>
        for the patch. This fixes Debian's bug #451518.
 
index 61a9acf0cb4677fed8486843e44017525e0926a3..78e596a29e8432a53be7a06118871bbfa1a0b6fb 100644 (file)
@@ -981,9 +981,6 @@ static void process_flags (int argc, char **argv)
                                user_newname = optarg;
                                break;
                        case 'L':
-                               if (Uflg || pflg)
-                                       usage ();
-
                                Lflg++;
                                break;
                        case 'm':
@@ -996,9 +993,6 @@ static void process_flags (int argc, char **argv)
                                oflg++;
                                break;
                        case 'p':
-                               if (Lflg || Uflg)
-                                       usage ();
-
                                user_pass = optarg;
                                pflg++;
                                break;
@@ -1021,9 +1015,6 @@ static void process_flags (int argc, char **argv)
                                uflg++;
                                break;
                        case 'U':
-                               if (Lflg && pflg)
-                                       usage ();
-
                                Uflg++;
                                break;
                        default:
@@ -1056,6 +1047,14 @@ static void process_flags (int argc, char **argv)
                exit (E_USAGE);
        }
 
+       if ((Lflg && (pflg || Uflg)) || (pflg && Uflg)) {
+               fprintf (stderr,
+                        _("%s: the -L, -p, and -U flags are exclusive\n"),
+                        Prog);
+               usage ();
+               exit (E_USAGE);
+       }
+
        if (mflg && !dflg) {
                fprintf (stderr,
                         _("%s: -m flag is ONLY allowed with the -d flag\n"),