summaryrefslogtreecommitdiff
path: root/perlio.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2014-05-07 09:30:35 -0400
committerTony Cook <tony@develop-help.com>2014-05-29 14:46:52 +1000
commit0a20f69bae04ff02616da2f0128de4e842151093 (patch)
tree6b1eabaea3b4073cd87bcedbbcafa8809c4c82c5 /perlio.c
parent0d3bd0a9e4912968103ee87e4bb695080725fbf8 (diff)
downloadperl-0a20f69bae04ff02616da2f0128de4e842151093.tar.gz
fd closes for failure paths.
Fix for Coverity perl5 CIDs 29053, 29055, 29057: Resource leak (RESOURCE_LEAK) leaked_handle: Handle variable fd going out of scope leaks the handle.
Diffstat (limited to 'perlio.c')
-rw-r--r--perlio.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/perlio.c b/perlio.c
index f110759c56..aa9a932b35 100644
--- a/perlio.c
+++ b/perlio.c
@@ -2661,6 +2661,7 @@ PerlIOUnix_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
}
if (!PerlIOValid(f)) {
if (!(f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) {
+ PerlLIO_close(fd);
return NULL;
}
}
@@ -2696,6 +2697,7 @@ PerlIOUnix_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags)
PerlIOUnix_setfd(aTHX_ f, fd, os->oflags);
return f;
}
+ PerlLIO_close(fd);
}
return NULL;
}
@@ -3050,6 +3052,7 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
}
return f;
}
+ PerlLIO_close(fd);
}
}
return NULL;