]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix KDC worker process argument parsing
authorGreg Hudson <ghudson@mit.edu>
Wed, 18 Jun 2014 16:58:39 +0000 (12:58 -0400)
committerGreg Hudson <ghudson@mit.edu>
Fri, 27 Jun 2014 20:02:46 +0000 (16:02 -0400)
To create worker processes, the KDC shuts down realms, forks off the
worker processes, then reinitializes realms in each child.
Reinitializing realms requires making a second pass over the
command-line arguments.  To do this with getopt, optind must be
reinitialized to 1 for each pass; otherwise, no options will be seen
the second time around.

ticket: 7945
target_version: 1.12.2
tags: pullup

src/kdc/main.c

index c2bc6c2f07e9c48f710e7e0d51f86092ad7c44e4..c3b7b802e428e170e0097d119022dfcd7742716f 100644 (file)
@@ -665,9 +665,11 @@ initialize_realms(krb5_context kcontext, int argc, char **argv)
     }
 
     /*
-     * Loop through the option list.  Each time we encounter a realm name,
-     * use the previously scanned options to fill in for defaults.
+     * Loop through the option list.  Each time we encounter a realm name, use
+     * the previously scanned options to fill in for defaults.  We do this
+     * twice if worker processes are used, so we must initialize optind.
      */
+    optind = 1;
     while ((c = getopt(argc, argv, "x:r:d:mM:k:R:e:P:p:s:nw:4:T:X3")) != -1) {
         switch(c) {
         case 'x':