Check for duplicate arguments to tor-gencert

Found by coverity, which noticed that if you said
  tor-gencert -i identity1 -i identity2
we would leak "identity1".

[CID 1198201, 1198202, 1198203]
This commit is contained in:
Nick Mathewson 2014-08-21 11:09:40 -04:00
parent a66fff6381
commit 446e481c90
2 changed files with 15 additions and 0 deletions

View File

@ -0,0 +1,3 @@
o Minor features:
- In tor-gencert, report an error if the user provides the same
argument more than once.

View File

@ -134,18 +134,30 @@ parse_commandline(int argc, char **argv)
fprintf(stderr, "No argument to -i\n");
return 1;
}
if (identity_key_file) {
fprintf(stderr, "Duplicate values for -i\n");
return -1;
}
identity_key_file = tor_strdup(argv[++i]);
} else if (!strcmp(argv[i], "-s")) {
if (i+1>=argc) {
fprintf(stderr, "No argument to -s\n");
return 1;
}
if (signing_key_file) {
fprintf(stderr, "Duplicate values for -s\n");
return -1;
}
signing_key_file = tor_strdup(argv[++i]);
} else if (!strcmp(argv[i], "-c")) {
if (i+1>=argc) {
fprintf(stderr, "No argument to -c\n");
return 1;
}
if (certificate_file) {
fprintf(stderr, "Duplicate values for -c\n");
return -1;
}
certificate_file = tor_strdup(argv[++i]);
} else if (!strcmp(argv[i], "-m")) {
if (i+1>=argc) {