diff --git a/kdc/connect.c b/kdc/connect.c index bc63f58a4..f98e6c749 100644 --- a/kdc/connect.c +++ b/kdc/connect.c @@ -1122,9 +1122,11 @@ start_kdc(krb5_context context, if (max_kdcs < 1) max_kdcs = 1; - pids = calloc(max_kdcs, sizeof(*pids)); + pids = malloc(max_kdcs * sizeof(*pids)); if (!pids) krb5_err(context, 1, errno, "malloc"); + for (i = 0; i < max_kdcs; i++) + pids[i] = (pid_t)-1; /* * We open a socketpair of which we hand one end to each of our kids. @@ -1196,12 +1198,12 @@ start_kdc(krb5_context context, sleep(10); break; default: - for (i=0; i < max_kdcs; i++) { - if (pids[i] == 0) { - pids[i] = pid; - break; - } - } + for (i = 0; i < max_kdcs; i++) { + if (pids[i] == (pid_t)-1) { + pids[i] = pid; + break; + } + } kdc_log(context, config, 0, "KDC worker process started: %d", pid); num_kdcs++;