Blame SOURCES/tar-1.30-xgetcwd-null-return-check.patch

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