From: Greg Hudson Date: Wed, 18 Jun 2014 16:58:39 +0000 (-0400) Subject: Fix KDC worker process argument parsing X-Git-Tag: krb5-1.12.2-final~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d749fa1a6442a920592d34a8f43aa857a56be044;p=thirdparty%2Fkrb5.git Fix KDC worker process argument parsing 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. (cherry picked from commit 1776fd19120d230115527febbd22979eb64ee1ff) ticket: 7945 version_fixed: 1.12.2 status: resolved --- diff --git a/src/kdc/main.c b/src/kdc/main.c index a7ffe635d9..a7d4b597f6 100644 --- a/src/kdc/main.c +++ b/src/kdc/main.c @@ -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':