helper: fix build with mingw gcc 12.1.0
authorAntonio Borneo <borneo.antonio@gmail.com>
Sun, 19 Jun 2022 20:10:47 +0000 (22:10 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Fri, 24 Jun 2022 21:54:46 +0000 (21:54 +0000)
New mingw compiler correctly complains for using a freed memory
area:

src/helper/configuration.c: In function 'get_home_dir':
src/helper/configuration.c:182:29: error: dangling pointer 'home'
to 'homepath' may be used [-Werror=dangling-pointer=]
182 | home_path = alloc_printf("%s/%s", home, append_path);
    |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In fact the variable 'homepath' is declared inside an 'if' branch
and is not available outside.

Move the declaration of 'homepath' to have it available in a wider
context.

Change-Id: I4a43a03c007c9f0d5c4cee962a9f7cc83ca49637
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Dietmar May <dietmar.may@outlook.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7038
Tested-by: jenkins
Reviewed-by: Dietmar May <dietmar.may@outlook.com>
src/helper/configuration.c

index 7e791d08489740782175e47487ca2775557501f9..614892c8a94f21552bae20515290bae91eb9ed9f 100644 (file)
@@ -148,6 +148,10 @@ int parse_config_file(struct command_context *cmd_ctx)
 
 char *get_home_dir(const char *append_path)
 {
+#ifdef _WIN32
+       char homepath[MAX_PATH];
+#endif
+
        char *home = getenv("HOME");
 
        if (!home) {
@@ -156,8 +160,6 @@ char *get_home_dir(const char *append_path)
                home = getenv("USERPROFILE");
 
                if (!home) {
-
-                       char homepath[MAX_PATH];
                        char *drive = getenv("HOMEDRIVE");
                        char *path = getenv("HOMEPATH");
                        if (drive && path) {