From b5751ebda800e80b7232a8fe97bce32c6c0e17e4 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Wed, 24 Jul 2019 02:25:08 +0200 Subject: [PATCH] error check in Get_program_directory() for linux --- src/setup.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/setup.c b/src/setup.c index 17e4b47f..72af034a 100644 --- a/src/setup.c +++ b/src/setup.c @@ -127,7 +127,26 @@ char * Get_program_directory(const char * argv0) program_dir = Extract_path(NULL, path); } else + { + char * current_dir, * tmp; + size_t len; + + program_dir = NULL; GFX2_Log(GFX2_WARNING, "readlink(%s) failed : %s\n", "/proc/self/exe", strerror(errno)); + current_dir = Get_current_directory(NULL, NULL, 0); + if (current_dir != NULL) + { + len = strlen(current_dir) + strlen(argv0) + 2; + tmp = malloc(len); + if (tmp != NULL) + { + snprintf(tmp, len, "%s/%s", current_dir, argv0); + program_dir = Extract_path(NULL, tmp); + free(tmp); + } + free(current_dir); + } + } } else program_dir = Extract_path(NULL, argv0);