From e633091d23ee483f4bc7a0f8bca15b5b17958fff Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 4 Jun 2020 12:35:19 -0700 Subject: [PATCH] Fix change_dir() leaving appended slash in curr_dir on failure. --- util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util.c b/util.c index e1a75565..2c734b7c 100644 --- a/util.c +++ b/util.c @@ -1116,6 +1116,7 @@ int change_dir(const char *dir, int set_path_only) skipped_chdir = set_path_only; memcpy(curr_dir, dir, len + 1); } else { + unsigned int save_dir_len = curr_dir_len; if (curr_dir_len + 1 + len >= sizeof curr_dir) { errno = ENAMETOOLONG; return 0; @@ -1125,6 +1126,7 @@ int change_dir(const char *dir, int set_path_only) memcpy(curr_dir + curr_dir_len, dir, len + 1); if (!set_path_only && chdir(curr_dir)) { + curr_dir_len = save_dir_len; curr_dir[curr_dir_len] = '\0'; return 0; } -- 2.47.2