[PATCH] fwts_framework: ensure the string returned from fwts_arch_names is free'd

Colin King colin.king at canonical.com
Fri Apr 24 13:48:24 UTC 2020


From: Colin Ian King <colin.king at canonical.com>

The string returned from fwts_arch_names is currently leaking. Fix this
by free'ing the returned object. To do so, the returned string can't be
a const char* so remove the const too.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/lib/include/fwts_arch.h  | 2 +-
 src/lib/src/fwts_arch.c      | 2 +-
 src/lib/src/fwts_framework.c | 6 ++++--
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/lib/include/fwts_arch.h b/src/lib/include/fwts_arch.h
index 55f1110b..07ec48b1 100644
--- a/src/lib/include/fwts_arch.h
+++ b/src/lib/include/fwts_arch.h
@@ -32,7 +32,7 @@ typedef enum {
 
 extern fwts_architecture fwts_arch_get_host(void);
 extern fwts_architecture fwts_arch_get_arch(const char *name);
-extern const char *fwts_arch_names(void);
+extern char *fwts_arch_names(void);
 extern const char *fwts_arch_get_name(const fwts_architecture arch);
 
 #endif
diff --git a/src/lib/src/fwts_arch.c b/src/lib/src/fwts_arch.c
index 27fce6b0..4c92e910 100644
--- a/src/lib/src/fwts_arch.c
+++ b/src/lib/src/fwts_arch.c
@@ -69,7 +69,7 @@ fwts_architecture fwts_arch_get_arch(const char *name)
 	return __fwts_arch_get_arch(name);
 }
 
-const char *fwts_arch_names(void)
+char *fwts_arch_names(void)
 {
 	const struct fwts_arch_info *ptr;
 	size_t len;
diff --git a/src/lib/src/fwts_framework.c b/src/lib/src/fwts_framework.c
index dc1e3642..e1e896bb 100644
--- a/src/lib/src/fwts_framework.c
+++ b/src/lib/src/fwts_framework.c
@@ -1157,8 +1157,10 @@ static int fwts_framework_an_parse(fwts_framework *fw, const char *arg)
 {
 	fw->target_arch = fwts_arch_get_arch(arg);
 	if (fw->target_arch == FWTS_ARCH_OTHER) {
-		fprintf(stderr, "--arch can be one of: %s\n",
-			fwts_arch_names());
+		char *names = fwts_arch_names();
+
+		fprintf(stderr, "--arch can be one of: %s\n", names ? names : "<unknown>");
+		free(names);
 		return FWTS_ERROR;
 	}
 
-- 
2.25.1




More information about the fwts-devel mailing list