aboutsummaryrefslogtreecommitdiff
path: root/lib/librtld_db/rtld_db.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2017-03-22 18:14:55 +0000
committerMark Johnston <markj@FreeBSD.org>2017-03-22 18:14:55 +0000
commit48da4e2024b69efe59b0d69687ea028b83005fbd (patch)
treeaeac0d35c94af2d8590b17eeb965a149950a1fdd /lib/librtld_db/rtld_db.c
parent78b83a1ea1755129c405415d0deaaa9cef0fa3af (diff)
downloadsrc-48da4e2024b69efe59b0d69687ea028b83005fbd.tar.gz
src-48da4e2024b69efe59b0d69687ea028b83005fbd.zip
Avoid double-closing an fd if elf_begin() fails.
Reported by: Miles Ohlrich <miles.ohlrich@isilon.com> MFC after: 1 week Sponsored by: Dell EMC Isilon
Notes
Notes: svn path=/head/; revision=315727
Diffstat (limited to 'lib/librtld_db/rtld_db.c')
-rw-r--r--lib/librtld_db/rtld_db.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/librtld_db/rtld_db.c b/lib/librtld_db/rtld_db.c
index 5b41e544b360..6e828d7d3d04 100644
--- a/lib/librtld_db/rtld_db.c
+++ b/lib/librtld_db/rtld_db.c
@@ -275,10 +275,8 @@ rtld_syms(rd_agent_t *rdap, const char *rtldpath, u_long base)
if (elf_version(EV_CURRENT) == EV_NONE)
goto err;
e = elf_begin(fd, ELF_C_READ, NULL);
- if (e == NULL) {
- close(fd);
+ if (e == NULL)
goto err;
- }
scn = NULL;
while ((scn = elf_nextscn(e, scn)) != NULL) {