diff options
author | Mark Johnston <markj@FreeBSD.org> | 2017-03-22 18:14:55 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2017-03-22 18:14:55 +0000 |
commit | 48da4e2024b69efe59b0d69687ea028b83005fbd (patch) | |
tree | aeac0d35c94af2d8590b17eeb965a149950a1fdd /lib/librtld_db/rtld_db.c | |
parent | 78b83a1ea1755129c405415d0deaaa9cef0fa3af (diff) | |
download | src-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.c | 4 |
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) { |