helper: fix build with mingw gcc 12.1.0

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>
This commit is contained in:
Antonio Borneo 2022-06-19 22:10:47 +02:00
parent 573a39b36c
commit a70bab9e51
1 changed files with 4 additions and 2 deletions

View 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) {