From: Eric Sandeen Date: Mon, 11 Nov 2019 16:22:34 +0000 (-0500) Subject: xfs_io: fix memory leak in add_enckey X-Git-Tag: v5.3.0-rc2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aaa3af15c16b30ee09be3b24f7d43dc1b326087;p=thirdparty%2Fxfsprogs-dev.git xfs_io: fix memory leak in add_enckey Invalid arguments to add_enckey will leak the "arg" allocation, so fix that. Fixes: ba71de04 ("xfs_io/encrypt: add 'add_enckey' command") Fixes-coverity-id: 1454644 Signed-off-by: Eric Sandeen Reviewed-by: Bill O'Donnell [sandeen: incorporate improvements from Eric Biggers] Signed-off-by: Eric Sandeen --- diff --git a/io/encrypt.c b/io/encrypt.c index 17d61cfb2..de48c50c5 100644 --- a/io/encrypt.c +++ b/io/encrypt.c @@ -678,6 +678,7 @@ add_enckey_f(int argc, char **argv) int c; struct fscrypt_add_key_arg *arg; ssize_t raw_size; + int retval = 0; arg = calloc(1, sizeof(*arg) + FSCRYPT_MAX_KEY_SIZE + 1); if (!arg) { @@ -696,14 +697,17 @@ add_enckey_f(int argc, char **argv) goto out; break; default: - return command_usage(&add_enckey_cmd); + retval = command_usage(&add_enckey_cmd); + goto out; } } argc -= optind; argv += optind; - if (argc != 0) - return command_usage(&add_enckey_cmd); + if (argc != 0) { + retval = command_usage(&add_enckey_cmd); + goto out; + } raw_size = read_until_limit_or_eof(STDIN_FILENO, arg->raw, FSCRYPT_MAX_KEY_SIZE + 1); @@ -732,7 +736,7 @@ add_enckey_f(int argc, char **argv) out: memset(arg->raw, 0, FSCRYPT_MAX_KEY_SIZE + 1); free(arg); - return 0; + return retval; } static int