From: Petr Machata Date: Wed, 10 Sep 2014 20:25:35 +0000 (+0200) Subject: elf_begin sets elf_errno for cases that the file is completely unreadable X-Git-Tag: elfutils-0.161~112 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=237188e4d764598300a577e08fd872339812fb2c;p=thirdparty%2Felfutils.git elf_begin sets elf_errno for cases that the file is completely unreadable - The problem this is trying to solve can be seen for example thus: $ eu-readelf -a / eu-readelf: failed reading '/': (null) With the fix we see a proper error number and get a reasonable error message: $ eu-readelf -a / eu-readelf: failed reading '/': invalid file descriptor Signed-off-by: Petr Machata --- diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 4bc8f56a4..5ad20a6af 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2014-09-10 Petr Machata + + * elf_begin (read_unmmaped_file): Call __libelf_seterrno if the + file is unreadable. + 2014-07-07 Mark Wielaard * elf.h: Update from glibc. diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index 1ef70ac33..c3ad1406c 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -550,9 +550,12 @@ read_unmmaped_file (int fildes, off_t offset, size_t maxsize, Elf_Cmd cmd, maxsize), offset); if (unlikely (nread == -1)) - /* We cannot even read the head of the file. Maybe FILDES is associated - with an unseekable device. This is nothing we can handle. */ - return NULL; + { + /* We cannot even read the head of the file. Maybe FILDES is associated + with an unseekable device. This is nothing we can handle. */ + __libelf_seterrno (ELF_E_INVALID_FILE); + return NULL; + } /* See what kind of object we have here. */ Elf_Kind kind = determine_kind (mem.header, nread);