9c226b5
From b8260293a8ed7849a358291faae7b58f4a05dcc9 Mon Sep 17 00:00:00 2001
9c226b5
From: Kamil Dudka <kdudka@redhat.com>
9c226b5
Date: Mon, 10 Nov 2014 18:23:34 +0100
9c226b5
Subject: [PATCH] Resolves: #1160923 - handle failure of fchdir()
9c226b5
9c226b5
... and chdir()
9c226b5
---
9c226b5
 src/cmd/ksh93/bltins/cd_pwd.c | 6 ++++--
9c226b5
 1 file changed, 4 insertions(+), 2 deletions(-)
9c226b5
9c226b5
diff --git a/src/cmd/ksh93/bltins/cd_pwd.c b/src/cmd/ksh93/bltins/cd_pwd.c
9c226b5
index a972da6..c20959c 100644
9c226b5
--- a/src/cmd/ksh93/bltins/cd_pwd.c
9c226b5
+++ b/src/cmd/ksh93/bltins/cd_pwd.c
9c226b5
@@ -329,18 +329,20 @@ int	b_cd(int argc, char *argv[],Shbltin_t *context)
9c226b5
 		if(newdirfd >=0)
9c226b5
 		{
9c226b5
 			/* chdir for directories on HSM/tapeworms may take minutes */
9c226b5
-			if(fchdir(newdirfd) >= 0)
9c226b5
+			if((rval=fchdir(newdirfd)) >= 0)
9c226b5
 			{
9c226b5
 				if(shp->pwdfd >= 0)
9c226b5
 					sh_close(shp->pwdfd);
9c226b5
 				shp->pwdfd=newdirfd;
9c226b5
 				goto success;
9c226b5
 			}
9c226b5
+			else
9c226b5
+				sh_close(newdirfd);
9c226b5
 		}
9c226b5
 #ifndef O_SEARCH
9c226b5
 		else
9c226b5
 		{
9c226b5
-			if(chdir(dir) >=0)
9c226b5
+			if((rval=chdir(dir)) >=0)
9c226b5
 			{
9c226b5
 				if(shp->pwdfd >= 0)
9c226b5
 				{
9c226b5
-- 
9c226b5
2.1.0
9c226b5