Whamcloud - gitweb
LU-9430 utils: fix logic errors and putchar in sk_name2hmac()
[fs/lustre-release.git] / lustre / utils / gss / lgss_sk.c
index f7254d2..d036450 100644 (file)
@@ -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   <len>      Shared key length in bits "
                "(Default: %d)\n", SK_DEFAULT_SK_KEYLEN);
-       fprintf(fp, "-d|--data       <file>     Key random data source "
-               "(Default: /dev/random)\n\n");
+       fprintf(fp, "-d|--data       <file>     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)) {