From 41745a916674ac7b62ecb2ce9c655dd7dee85cd3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 21 Aug 2011 14:07:21 -0700 Subject: [PATCH] secret: use strncpy, snprintf Coverity cid 42 Signed-off-by: Sage Weil --- src/common/secret.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/common/secret.c b/src/common/secret.c index 158343e8f5a39..3aa45c54e3a8a 100644 --- a/src/common/secret.c +++ b/src/common/secret.c @@ -75,13 +75,16 @@ static int add_secret_to_kernel(const char *secret, const char *key_name) int get_secret_option(const char *secret, const char *key_name, char *secret_option, size_t max_len) { int ret; - char option[strlen(secret) + strlen(key_name) + 7]; + int olen = strlen(secret) + strlen(key_name) + 7; + char option[olen+1]; + + option[olen] = '\0'; ret = add_secret_to_kernel(secret, key_name); if (ret < 0) { if (ret == -ENODEV || ret == -ENOSYS) { /* running against older kernel; fall back to secret= in options */ - sprintf(option, "secret=%s", secret); + snprintf(option, olen, "secret=%s", secret); ret = 0; } else { fprintf(stderr, "adding ceph secret key to kernel failed: %s.\n", strerror(-ret)); @@ -89,13 +92,14 @@ int get_secret_option(const char *secret, const char *key_name, char *secret_opt } } else { /* add key= option to identify key to use */ - sprintf(option, "key=%s", key_name); + snprintf(option, olen, "key=%s", key_name); } if (strlen(option) + 1 > max_len) { ret = -ERANGE; } else { - strcpy(secret_option, option); + secret_option[max_len-1] = '\0'; + strncpy(secret_option, option, max_len-1); } return ret; -- 2.39.5