Fix out of bound access in libziparchive
am: 1ee4892e66
Change-Id: I26b48df5a9d39933b90ac063172b4b4ae8428bfd
This commit is contained in:
commit
c24dd97654
1 changed files with 6 additions and 1 deletions
|
|
@ -501,9 +501,14 @@ static int32_t MapCentralDirectory0(int fd, const char* debug_file_name,
|
||||||
* Grab the CD offset and size, and the number of entries in the
|
* Grab the CD offset and size, and the number of entries in the
|
||||||
* archive and verify that they look reasonable.
|
* archive and verify that they look reasonable.
|
||||||
*/
|
*/
|
||||||
if (eocd->cd_start_offset + eocd->cd_size > eocd_offset) {
|
if (static_cast<off64_t>(eocd->cd_start_offset) + eocd->cd_size > eocd_offset) {
|
||||||
ALOGW("Zip: bad offsets (dir %" PRIu32 ", size %" PRIu32 ", eocd %" PRId64 ")",
|
ALOGW("Zip: bad offsets (dir %" PRIu32 ", size %" PRIu32 ", eocd %" PRId64 ")",
|
||||||
eocd->cd_start_offset, eocd->cd_size, static_cast<int64_t>(eocd_offset));
|
eocd->cd_start_offset, eocd->cd_size, static_cast<int64_t>(eocd_offset));
|
||||||
|
#if defined(__ANDROID__)
|
||||||
|
if (eocd->cd_start_offset + eocd->cd_size <= eocd_offset) {
|
||||||
|
android_errorWriteLog(0x534e4554, "31251826");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return kInvalidOffset;
|
return kInvalidOffset;
|
||||||
}
|
}
|
||||||
if (eocd->num_records == 0) {
|
if (eocd->num_records == 0) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue