version 1.385, 2024/03/04 02:16:11 |
version 1.386, 2024/03/04 04:13:18 |
|
|
return oBadOption; |
return oBadOption; |
} |
} |
|
|
|
static void |
|
free_canon_cnames(struct allowed_cname *cnames, u_int n) |
|
{ |
|
u_int i; |
|
|
|
if (cnames == NULL || n == 0) |
|
return; |
|
for (i = 0; i < n; i++) { |
|
free(cnames[i].source_list); |
|
free(cnames[i].target_list); |
|
} |
|
free(cnames); |
|
} |
|
|
/* Multistate option parsing */ |
/* Multistate option parsing */ |
struct multistate { |
struct multistate { |
char *key; |
char *key; |
|
|
if (found && *activep) { |
if (found && *activep) { |
options->permitted_cnames = cnames; |
options->permitted_cnames = cnames; |
options->num_permitted_cnames = ncnames; |
options->num_permitted_cnames = ncnames; |
} else { |
cnames = NULL; /* transferred */ |
for (i = 0; i < ncnames; i++) { |
ncnames = 0; |
free(cnames[i].source_list); |
|
free(cnames[i].target_list); |
|
} |
|
free(cnames); |
|
} |
} |
|
/* un-transferred cnames is cleaned up before exit */ |
break; |
break; |
|
|
case oCanonicalizeHostname: |
case oCanonicalizeHostname: |
|
|
/* success */ |
/* success */ |
ret = 0; |
ret = 0; |
out: |
out: |
|
free_canon_cnames(cnames, ncnames); |
opt_array_free2(strs, NULL, nstrs); |
opt_array_free2(strs, NULL, nstrs); |
argv_free(oav, oac); |
argv_free(oav, oac); |
return ret; |
return ret; |