summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-12-13 02:19:37 +0100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-12-13 02:19:37 +0100
commitefc5eb3f68302fa8e061e51c5b632cbc904f451f (patch)
tree2793b5bfe61a20008ec4e70dd2ef23ed8692e921
parentbd9837c3559f8e545bdb6bd4010b0e2d6e6297c4 (diff)
parent420d162484acf9c30693a651702eee5864cf14a1 (diff)
downloadsystem_core-efc5eb3f68302fa8e061e51c5b632cbc904f451f.tar.gz
system_core-efc5eb3f68302fa8e061e51c5b632cbc904f451f.tar.bz2
system_core-efc5eb3f68302fa8e061e51c5b632cbc904f451f.zip
Merge branch 'cm-13.0' of https://github.com/CyanogenMod/android_system_core into replicant-6.0
-rw-r--r--libziparchive/zip_archive.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libziparchive/zip_archive.cc b/libziparchive/zip_archive.cc
index cc39aa5fe..a17091f95 100644
--- a/libziparchive/zip_archive.cc
+++ b/libziparchive/zip_archive.cc
@@ -463,9 +463,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
* 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 ")",
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;
}
if (eocd->num_records == 0) {