Kamil Dudka 0a5586
From 19c75aec6843b827fa7ef3f39174090ee7f8ac18 Mon Sep 17 00:00:00 2001
Kamil Dudka 0a5586
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
Kamil Dudka 0a5586
Date: Thu, 22 Jan 2015 20:20:15 +0000
Kamil Dudka 6a607c
Subject: [PATCH 1/2] 34331: better handling of NULL in cd.
Kamil Dudka 0a5586
Kamil Dudka 0a5586
Problem was return from symbolic link expander in weird cases
Kamil Dudka 0a5586
where there file system isn't behaving itself properly.
Kamil Dudka 0a5586
Kamil Dudka 0a5586
Upstream-commit: 12b813b5895cae579e403dafe43878868f27fe0f
Kamil Dudka 0a5586
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
Kamil Dudka 0a5586
---
Kamil Dudka 0a5586
 Src/builtin.c |  8 +++++---
Kamil Dudka 0a5586
 Src/utils.c   | 11 +++++++----
Kamil Dudka 0a5586
 2 files changed, 12 insertions(+), 7 deletions(-)
Kamil Dudka 0a5586
Kamil Dudka 0a5586
diff --git a/Src/builtin.c b/Src/builtin.c
Kamil Dudka 0a5586
index 2118835..489ca23 100644
Kamil Dudka 0a5586
--- a/Src/builtin.c
Kamil Dudka 0a5586
+++ b/Src/builtin.c
Kamil Dudka 0a5586
@@ -1156,9 +1156,11 @@ cd_new_pwd(int func, LinkNode dir, int quiet)
Kamil Dudka 0a5586
 	zsfree(getlinknode(dirstack));
Kamil Dudka 0a5586
 
Kamil Dudka 0a5586
     if (chasinglinks) {
Kamil Dudka 0a5586
-	s = new_pwd;
Kamil Dudka 0a5586
-	new_pwd = findpwd(s);
Kamil Dudka 0a5586
-	zsfree(s);
Kamil Dudka 0a5586
+	s = findpwd(new_pwd);
Kamil Dudka 0a5586
+	if (s) {
Kamil Dudka 0a5586
+	    zsfree(new_pwd);
Kamil Dudka 0a5586
+	    new_pwd = s;
Kamil Dudka 0a5586
+	}
Kamil Dudka 0a5586
     }
Kamil Dudka 0a5586
     if (isset(PUSHDIGNOREDUPS)) {
Kamil Dudka 0a5586
 	LinkNode n;
Kamil Dudka 0a5586
diff --git a/Src/utils.c b/Src/utils.c
Kamil Dudka 0a5586
index e6eb8e6..80396a2 100644
Kamil Dudka 0a5586
--- a/Src/utils.c
Kamil Dudka 0a5586
+++ b/Src/utils.c
Kamil Dudka 0a5586
@@ -1049,10 +1049,13 @@ getnameddir(char *name)
Kamil Dudka 0a5586
 	if ((pw = getpwnam(name))) {
Kamil Dudka 0a5586
 	    char *dir = isset(CHASELINKS) ? xsymlink(pw->pw_dir)
Kamil Dudka 0a5586
 		: ztrdup(pw->pw_dir);
Kamil Dudka 0a5586
-	    adduserdir(name, dir, ND_USERNAME, 1);
Kamil Dudka 0a5586
-	    str = dupstring(dir);
Kamil Dudka 0a5586
-	    zsfree(dir);
Kamil Dudka 0a5586
-	    return str;
Kamil Dudka 0a5586
+	    if (dir) {
Kamil Dudka 0a5586
+		adduserdir(name, dir, ND_USERNAME, 1);
Kamil Dudka 0a5586
+		str = dupstring(dir);
Kamil Dudka 0a5586
+		zsfree(dir);
Kamil Dudka 0a5586
+		return str;
Kamil Dudka 0a5586
+	    } else
Kamil Dudka 0a5586
+		return ztrdup(pw->pw_dir);
Kamil Dudka 0a5586
 	}
Kamil Dudka 0a5586
     }
Kamil Dudka 0a5586
 #endif /* HAVE_GETPWNAM */
Kamil Dudka 0a5586
-- 
Kamil Dudka 0a5586
2.1.0
Kamil Dudka 0a5586
Kamil Dudka 6a607c
Kamil Dudka 6a607c
From d0777e66d47d0a87f3171962d8137a6cb75d7ade Mon Sep 17 00:00:00 2001
Kamil Dudka 6a607c
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
Kamil Dudka 6a607c
Date: Sun, 25 Jan 2015 18:03:20 +0000
Kamil Dudka 6a607c
Subject: [PATCH 2/2] 34383: ztrdup() should be dupstring() in new cd code
Kamil Dudka 6a607c
Kamil Dudka 6a607c
Upstream-commit: ccd3663d4e9a1749450b35cc689359f78a310c04
Kamil Dudka 6a607c
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
Kamil Dudka 6a607c
---
Kamil Dudka 6a607c
 Src/utils.c | 2 +-
Kamil Dudka 6a607c
 1 file changed, 1 insertion(+), 1 deletion(-)
Kamil Dudka 6a607c
Kamil Dudka 6a607c
diff --git a/Src/utils.c b/Src/utils.c
Kamil Dudka 6a607c
index 80396a2..ef71210 100644
Kamil Dudka 6a607c
--- a/Src/utils.c
Kamil Dudka 6a607c
+++ b/Src/utils.c
Kamil Dudka 6a607c
@@ -1055,7 +1055,7 @@ getnameddir(char *name)
Kamil Dudka 6a607c
 		zsfree(dir);
Kamil Dudka 6a607c
 		return str;
Kamil Dudka 6a607c
 	    } else
Kamil Dudka 6a607c
-		return ztrdup(pw->pw_dir);
Kamil Dudka 6a607c
+		return dupstring(pw->pw_dir);
Kamil Dudka 6a607c
 	}
Kamil Dudka 6a607c
     }
Kamil Dudka 6a607c
 #endif /* HAVE_GETPWNAM */
Kamil Dudka 6a607c
-- 
Kamil Dudka 6a607c
2.1.0
Kamil Dudka 6a607c