summaryrefslogtreecommitdiff
path: root/Src/exec.c
diff options
context:
space:
mode:
authorAxel Beckert <abe@deuxchevaux.org>2015-09-08 22:44:56 +0200
committerAxel Beckert <abe@deuxchevaux.org>2015-09-08 22:44:56 +0200
commit22cf83b3c5920784188d7dcdfe1ff319cf4603f1 (patch)
tree30c4fcd9ab3549c43904ed095e98f03bd4d91244 /Src/exec.c
parent6c27cb3d5292f8ea6c93503afe54fcc1bce4c1cc (diff)
parenteaea1dc23c4a4e7b65046edd7f3d53a81e39e27b (diff)
downloadzsh-22cf83b3c5920784188d7dcdfe1ff319cf4603f1.tar.gz
zsh-22cf83b3c5920784188d7dcdfe1ff319cf4603f1.zip
Merge tag 'zsh-5.1-test-1' into debian
Diffstat (limited to 'Src/exec.c')
-rw-r--r--Src/exec.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Src/exec.c b/Src/exec.c
index 45f1c66f0..109a04a26 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -5392,7 +5392,9 @@ getfpfunc(char *s, int *ksh, char **fname)
}
unmetafy(buf, NULL);
if (!access(buf, R_OK) && (fd = open(buf, O_RDONLY | O_NOCTTY)) != -1) {
- if ((len = lseek(fd, 0, 2)) != -1) {
+ struct stat st;
+ if (!fstat(fd, &st) && S_ISREG(st.st_mode) &&
+ (len = lseek(fd, 0, 2)) != -1) {
d = (char *) zalloc(len + 1);
lseek(fd, 0, 0);
if ((rlen = read(fd, d, len)) >= 0) {