From 1fde88de1609a046285675ab76e8ecd3e7792b2b Mon Sep 17 00:00:00 2001 From: Andrew Goodbody Date: Mon, 30 Jun 2025 11:23:39 +0100 Subject: cmd: tpm: Fix attempt to return value not in enum The function tpm2_name_to_algorithm is defined as returning an enum for the algorithm specified but it also attempts to return an error on failure, but that error is not included in the enum. Add the error to the enum so that it can be returned. This issue was reported by Smatch. Signed-off-by: Andrew Goodbody Reviewed-by: Ilias Apalodimas Signed-off-by: Ilias Apalodimas --- include/tpm-v2.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/tpm-v2.h b/include/tpm-v2.h index ece422df0c7..f3eb2ef5643 100644 --- a/include/tpm-v2.h +++ b/include/tpm-v2.h @@ -20,6 +20,7 @@ #define __TPM_V2_H #include +#include struct udevice; @@ -266,6 +267,7 @@ enum tpm2_return_codes { * TPM2 algorithms. */ enum tpm2_algorithms { + TPM2_ALG_INVAL = -EINVAL, TPM2_ALG_SHA1 = 0x04, TPM2_ALG_XOR = 0x0A, TPM2_ALG_SHA256 = 0x0B, -- cgit v1.2.3 From 8280d2a77ffe72727ef1c729861231b523680dfb Mon Sep 17 00:00:00 2001 From: Andrew Goodbody Date: Mon, 30 Jun 2025 11:23:40 +0100 Subject: tpm: Make use of TPM2_ALG_INVAL from enum Now that the enum includes TPM2_ALG_INVAL, use that name in the code. Reviewed-by: Ilias Apalodimas Signed-off-by: Andrew Goodbody Signed-off-by: Ilias Apalodimas --- cmd/tpm-v2.c | 6 +++--- lib/tpm-v2.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/tpm-v2.c b/cmd/tpm-v2.c index a62862e94f9..346e21d27bb 100644 --- a/cmd/tpm-v2.c +++ b/cmd/tpm-v2.c @@ -113,7 +113,7 @@ static int do_tpm2_pcr_extend(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; if (argc == 4) { algo = tpm2_name_to_algorithm(argv[3]); - if (algo < 0) + if (algo == TPM2_ALG_INVAL) return CMD_RET_FAILURE; } algo_len = tpm2_algorithm_to_len(algo); @@ -157,7 +157,7 @@ static int do_tpm_pcr_read(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; if (argc == 4) { algo = tpm2_name_to_algorithm(argv[3]); - if (algo < 0) + if (algo == TPM2_ALG_INVAL) return CMD_RET_FAILURE; } algo_len = tpm2_algorithm_to_len(algo); @@ -288,7 +288,7 @@ static int do_tpm2_pcrallocate(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; algo = tpm2_name_to_algorithm(argv[1]); - if (algo == -EINVAL) + if (algo == TPM2_ALG_INVAL) return CMD_RET_USAGE; ret = get_tpm(&dev); diff --git a/lib/tpm-v2.c b/lib/tpm-v2.c index 9ca7933c094..5b21c57ae42 100644 --- a/lib/tpm-v2.c +++ b/lib/tpm-v2.c @@ -1141,7 +1141,7 @@ enum tpm2_algorithms tpm2_name_to_algorithm(const char *name) } printf("%s: unsupported algorithm %s\n", __func__, name); - return -EINVAL; + return TPM2_ALG_INVAL; } const char *tpm2_algorithm_name(enum tpm2_algorithms algo) -- cgit v1.2.3