Blame SPECS/ksh-20120801-cdfix2.patch
|
Packit Service |
a8c26c |
diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
|
|
Packit Service |
a8c26c |
--- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 2013-02-01 16:46:50.441771371 +0100
|
|
Packit Service |
a8c26c |
+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:57:43.241784024 +0100
|
|
Packit Service |
a8c26c |
@@ -61,6 +61,7 @@ int sh_diropenat(Shell_t *shp, int dir,
|
|
Packit Service |
a8c26c |
{
|
|
Packit Service |
a8c26c |
int fd,shfd;
|
|
Packit Service |
a8c26c |
int savederrno=errno;
|
|
Packit Service |
a8c26c |
+ struct stat fs;
|
|
Packit Service |
a8c26c |
#ifndef AT_FDCWD
|
|
Packit Service |
a8c26c |
NOT_USED(dir);
|
|
Packit Service |
a8c26c |
#endif
|
|
Packit Service |
a8c26c |
@@ -133,6 +134,13 @@ int sh_diropenat(Shell_t *shp, int dir,
|
|
Packit Service |
a8c26c |
|
|
Packit Service |
a8c26c |
if(fd < 0)
|
|
Packit Service |
a8c26c |
return fd;
|
|
Packit Service |
a8c26c |
+
|
|
Packit Service |
a8c26c |
+ if (!fstat(fd, &fs) && !S_ISDIR(fs.st_mode))
|
|
Packit Service |
a8c26c |
+ {
|
|
Packit Service |
a8c26c |
+ close(fd);
|
|
Packit Service |
a8c26c |
+ errno = ENOTDIR;
|
|
Packit Service |
a8c26c |
+ return -1;
|
|
Packit Service |
a8c26c |
+ }
|
|
Packit Service |
a8c26c |
|
|
Packit Service |
a8c26c |
/* Move fd to a number > 10 and *register* the fd number with the shell */
|
|
Packit Service |
a8c26c |
shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
|