From: Wayne Davison Date: Thu, 4 Jun 2020 19:35:19 +0000 (-0700) Subject: Fix change_dir() leaving appended slash in curr_dir on failure. X-Git-Tag: v3.2.0pre1~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e633091d23ee483f4bc7a0f8bca15b5b17958fff;p=thirdparty%2Frsync.git Fix change_dir() leaving appended slash in curr_dir on failure. --- 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; }