On 2014-12-27 01:00, Mark Wielaard wrote:
diff --git a/src/strings.c b/src/strings.c
index f60e4b4..d1eb7b2 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -725,8 +725,21 @@ read_elf (Elf *elf, int fd, const char *fname, off64_t 
fdlen)
         actually have content.  */
        if (shdr != NULL && shdr->sh_type != SHT_NOBITS
          && (shdr->sh_flags & SHF_ALLOC) != 0)
-       result |= read_block (fd, fname, fdlen, shdr->sh_offset,
-                             shdr->sh_offset + shdr->sh_size);
+       {
+         if (shdr->sh_offset > fdlen
+             || fdlen - shdr->sh_offset < shdr->sh_size)
+           {

It fails to build for me:

strings.c: In function 'read_elf':
strings.c:729:24: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
    if (shdr->sh_offset > fdlen
                        ^
cc1: all warnings being treated as errors

--
Alexander Cherepanov

Reply via email to