]> granicus.if.org Git - file/commitdiff
Fix note bounds reading, Francisco Alonso / Red Hat
authorChristos Zoulas <christos@zoulas.com>
Fri, 17 Oct 2014 15:49:00 +0000 (15:49 +0000)
committerChristos Zoulas <christos@zoulas.com>
Fri, 17 Oct 2014 15:49:00 +0000 (15:49 +0000)
ChangeLog
src/readelf.c

index b42e3d789838afc73402fe2cd851a7228b5ddf79..681e7a950a8f16f2e367903efdc6801228381fff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-10-17  11:48  Christos Zoulas <christos@zoulas.com>
+
+       * fix bounds in note reading (Francisco Alonso / Red Hat)
+
 2014-10-11  15:02  Christos Zoulas <christos@zoulas.com>
 
        * fix autoconf glue for setlocale and locale_t; some OS's
index 08f81f5b8ab678274b180ae751d49160708b2228..9ebdebd614bb0f5caf4f84466695f87af4adcc22 100644 (file)
@@ -27,7 +27,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: readelf.c,v 1.102 2014/03/11 21:00:13 christos Exp $")
+FILE_RCSID("@(#)$File: readelf.c,v 1.103 2014/05/02 02:25:10 christos Exp $")
 #endif
 
 #ifdef BUILTIN_ELF
@@ -477,6 +477,13 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
        uint32_t namesz, descsz;
        unsigned char *nbuf = CAST(unsigned char *, vbuf);
 
+       if (xnh_sizeof + offset > size) {
+               /*
+                * We're out of note headers.
+                */
+               return xnh_sizeof + offset;
+       }
+
        (void)memcpy(xnh_addr, &nbuf[offset], xnh_sizeof);
        offset += xnh_sizeof;