#include "readelf.h"
#ifndef lint
-FILE_RCSID("@(#)$Id: readelf.c,v 1.44 2004/11/21 05:20:31 christos Exp $")
+FILE_RCSID("@(#)$Id: readelf.c,v 1.45 2004/11/24 17:38:24 christos Exp $")
#endif
#ifdef ELFCORE
file_badseek(ms);
return -1;
}
- bufsize = read(fd, nbuf, sizeof(nbuf));
+ bufsize = read(fd, nbuf,
+ ((ph_filesz < sizeof(nbuf)) ? ph_filesz : sizeof(nbuf)));
if (bufsize == -1) {
file_badread(ms);
return -1;
}
offset = ELF_ALIGN(doff + descsz);
- if (offset + descsz > size) {
+ if (doff + descsz > size) {
return offset;
}
file_badseek(ms);
return -1;
}
- bufsize = read(fd, nbuf, sizeof(nbuf));
+ bufsize = read(fd, nbuf, ((ph_filesz < sizeof(nbuf)) ?
+ ph_filesz : sizeof(nbuf)));
if (bufsize == -1) {
file_badread(ms);
return -1;
#ifndef lint
-FILE_RCSID("@(#)$Id: softmagic.c,v 1.71 2004/11/21 06:09:43 christos Exp $")
+FILE_RCSID("@(#)$Id: softmagic.c,v 1.72 2004/11/24 17:38:25 christos Exp $")
#endif /* lint */
private int match(struct magic_set *, struct magic *, uint32_t,
* might even cause problems
*/
if (nbytes < sizeof(*p))
- (void)memset(p + nbytes, '\0', sizeof(*p) - nbytes);
+ (void)memset(((char *)p) + nbytes, '\0', sizeof(*p) - nbytes);
return 0;
}