|
Lines 147-152
Link Here
|
| 147 |
getu32(swap, ph32.p_align) : 4) \ |
147 |
getu32(swap, ph32.p_align) : 4) \ |
| 148 |
: (off_t) (ph64.p_align ? \ |
148 |
: (off_t) (ph64.p_align ? \ |
| 149 |
getu64(swap, ph64.p_align) : 4))) |
149 |
getu64(swap, ph64.p_align) : 4))) |
|
|
150 |
#define ph_filesz (class == ELFCLASS32 \ |
| 151 |
? getu32(swap, ph32.p_filesz) \ |
| 152 |
: getu64(swap, ph64.p_filesz)) |
| 150 |
#define nh_size (class == ELFCLASS32 \ |
153 |
#define nh_size (class == ELFCLASS32 \ |
| 151 |
? sizeof nh32 \ |
154 |
? sizeof nh32 \ |
| 152 |
: sizeof nh64) |
155 |
: sizeof nh64) |
|
Lines 250-256
Link Here
|
| 250 |
file_badseek(ms); |
253 |
file_badseek(ms); |
| 251 |
return -1; |
254 |
return -1; |
| 252 |
} |
255 |
} |
| 253 |
bufsize = read(fd, nbuf, BUFSIZ); |
256 |
bufsize = read(fd, nbuf, ((ph_filesz < BUFSIZ) ? ph_filesz : BUFSIZ)); |
| 254 |
if (bufsize == -1) { |
257 |
if (bufsize == -1) { |
| 255 |
file_badread(ms); |
258 |
file_badread(ms); |
| 256 |
return -1; |
259 |
return -1; |
|
Lines 313-319
Link Here
|
| 313 |
noff = offset; |
316 |
noff = offset; |
| 314 |
doff = ELF_ALIGN(offset + namesz); |
317 |
doff = ELF_ALIGN(offset + namesz); |
| 315 |
|
318 |
|
| 316 |
if (offset + namesz >= size) { |
319 |
if (offset + namesz > size) { |
| 317 |
/* |
320 |
/* |
| 318 |
* We're past the end of the buffer. |
321 |
* We're past the end of the buffer. |
| 319 |
*/ |
322 |
*/ |
|
Lines 321-327
Link Here
|
| 321 |
} |
324 |
} |
| 322 |
|
325 |
|
| 323 |
offset = ELF_ALIGN(doff + descsz); |
326 |
offset = ELF_ALIGN(doff + descsz); |
| 324 |
if (offset + descsz >= size) { |
327 |
if (doff + descsz > size) { |
| 325 |
return offset; |
328 |
return offset; |
| 326 |
} |
329 |
} |
| 327 |
|
330 |
|
|
Lines 670-676
Link Here
|
| 670 |
file_badseek(ms); |
673 |
file_badseek(ms); |
| 671 |
return -1; |
674 |
return -1; |
| 672 |
} |
675 |
} |
| 673 |
bufsize = read(fd, nbuf, sizeof(nbuf)); |
676 |
bufsize = read(fd, nbuf, |
|
|
677 |
((ph_filesz < sizeof(nbuf)) ? ph_filesz : sizeof(nbuf))); |
| 674 |
if (bufsize == -1) { |
678 |
if (bufsize == -1) { |
| 675 |
file_badread(ms); |
679 |
file_badread(ms); |
| 676 |
return -1; |
680 |
return -1; |
|
Lines 684-690
Link Here
|
| 684 |
if (offset == 0) |
688 |
if (offset == 0) |
| 685 |
break; |
689 |
break; |
| 686 |
} |
690 |
} |
| 687 |
if (lseek(fd, savedoffset + offset, SEEK_SET) |
691 |
if (lseek(fd, savedoffset, SEEK_SET) |
| 688 |
== (off_t)-1) { |
692 |
== (off_t)-1) { |
| 689 |
file_badseek(ms); |
693 |
file_badseek(ms); |
| 690 |
return -1; |
694 |
return -1; |