X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Futils%2Fgss%2Flgss_sk.c;h=d036450788d45749ef7422791432bc62e24f0c29;hp=f7254d2bf3252ef61bbc0d34d5bd2f6182387288;hb=2ffbcc9f9ad930fee2df53238b3244b7c3e6bb91;hpb=70e9d4ecc9130aeed1260d78cd8b33a5cde6edd7 diff --git a/lustre/utils/gss/lgss_sk.c b/lustre/utils/gss/lgss_sk.c index f7254d2..d036450 100644 --- a/lustre/utils/gss/lgss_sk.c +++ b/lustre/utils/gss/lgss_sk.c @@ -83,15 +83,15 @@ enum cfs_crypto_hash_alg sk_name2hmac(char *name) /* convert to lower case */ while (name[i]) { - putchar(tolower(name[i])); + name[i] = tolower(name[i]); i++; } - if (strcmp(name, "none")) + if (strcmp(name, "none") == 0) return CFS_HASH_ALG_NULL; algo = cfs_crypto_hash_alg(name); - if ((algo != CFS_HASH_ALG_SHA256) || + if ((algo != CFS_HASH_ALG_SHA256) && (algo != CFS_HASH_ALG_SHA512)) return SK_HMAC_INVALID; @@ -133,8 +133,9 @@ static void usage(FILE *fp, char *program) "client)\n"); fprintf(fp, "-k|--key-bits Shared key length in bits " "(Default: %d)\n", SK_DEFAULT_SK_KEYLEN); - fprintf(fp, "-d|--data Key random data source " - "(Default: /dev/random)\n\n"); + fprintf(fp, "-d|--data Key data source for new keys " + "(Default: /dev/random)\n"); + fprintf(fp, " Not a seed value. This is the actual key value.\n\n"); fprintf(fp, "Other Options:\n"); fprintf(fp, "-v|--verbose Increase verbosity for errors\n"); exit(EXIT_FAILURE); @@ -498,6 +499,10 @@ int main(int argc, char **argv) fprintf(stderr, "error: invalid HMAC algorithm specified\n"); return EXIT_FAILURE; } + if (modify && datafile) { + fprintf(stderr, "error: data file option not valid in key modify\n"); + return EXIT_FAILURE; + } if (modify) { config = sk_read_file(modify); @@ -550,7 +555,7 @@ int main(int argc, char **argv) generate_prime = type & SK_TYPE_CLIENT; strncpy(config->skc_nodemap, SK_DEFAULT_NODEMAP, - strlen(SK_DEFAULT_NODEMAP)); + sizeof(config->skc_nodemap) - 1); if (!datafile) datafile = "/dev/random"; @@ -567,9 +572,11 @@ int main(int argc, char **argv) if (prime_bits != -1) config->skc_prime_bits = prime_bits; if (fsname) - strncpy(config->skc_fsname, fsname, strlen(fsname)); + strncpy(config->skc_fsname, fsname, + sizeof(config->skc_fsname) - 1); if (nodemap) - strncpy(config->skc_nodemap, nodemap, strlen(nodemap)); + strncpy(config->skc_nodemap, nodemap, + sizeof(config->skc_nodemap) - 1); if (mgsnids && parse_mgsnids(mgsnids, config)) goto error; if (sk_validate_config(config)) {