From 60acf5a7407ef263aaf7d3751da08167b1990eb0 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Wed, 20 May 2020 13:35:28 +0200 Subject: [PATCH] Check return value from xgetcwd * src/misc.c (chdir_arg,tar_getcdpath): Check for non-NULL return from xgetcwd. The function returns NULL for any error originating from getcwd. --- src/misc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/misc.c b/src/misc.c index cd07f53..eccf6f9 100644 --- a/src/misc.c +++ b/src/misc.c @@ -301,8 +301,6 @@ normalize_filename (int cdidx, const char *name) size_t copylen; bool need_separator; - if (!cdpath) - call_arg_fatal ("getcwd", "."); copylen = strlen (cdpath); need_separator = ! (DOUBLE_SLASH_IS_DISTINCT_ROOT && copylen == 2 && ISSLASH (cdpath[1])); @@ -909,6 +907,8 @@ chdir_arg (char const *dir) { wd[wd_count].name = "."; wd[wd_count].abspath = xgetcwd (); + if (!wd[wd_count].abspath) + call_arg_fatal ("getcwd", "."); wd[wd_count].fd = AT_FDCWD; wd_count++; } @@ -1034,7 +1034,11 @@ tar_getcdpath (int idx) { static char *cwd; if (!cwd) - cwd = xgetcwd (); + { + cwd = xgetcwd (); + if (!cwd) + call_arg_fatal ("getcwd", "."); + } return cwd; } return wd[idx].abspath; -- 2.24.1