Loading libziparchive/zip_archive.cc +11 −0 Original line number Original line Diff line number Diff line Loading @@ -573,6 +573,17 @@ static int32_t FindEntry(const ZipArchive* archive, const int ent, // Paranoia: Match the values specified in the local file header // Paranoia: Match the values specified in the local file header // to those specified in the central directory. // to those specified in the central directory. // Verify that the central directory and local file header agree on the use of a trailing // Data Descriptor. if ((lfh->gpb_flags & kGPBDDFlagMask) != (cdr->gpb_flags & kGPBDDFlagMask)) { ALOGW("Zip: gpb flag mismatch. expected {%04" PRIx16 "}, was {%04" PRIx16 "}", cdr->gpb_flags, lfh->gpb_flags); return kInconsistentInformation; } // If there is no trailing data descriptor, verify that the central directory and local file // header agree on the crc, compressed, and uncompressed sizes of the entry. if ((lfh->gpb_flags & kGPBDDFlagMask) == 0) { if ((lfh->gpb_flags & kGPBDDFlagMask) == 0) { data->has_data_descriptor = 0; data->has_data_descriptor = 0; if (data->compressed_length != lfh->compressed_size if (data->compressed_length != lfh->compressed_size Loading libziparchive/zip_writer.cc +3 −1 Original line number Original line Diff line number Diff line Loading @@ -479,7 +479,9 @@ int32_t ZipWriter::Finish() { for (FileEntry& file : files_) { for (FileEntry& file : files_) { CentralDirectoryRecord cdr = {}; CentralDirectoryRecord cdr = {}; cdr.record_signature = CentralDirectoryRecord::kSignature; cdr.record_signature = CentralDirectoryRecord::kSignature; if ((file.compression_method & kCompressDeflated) || !seekable_) { cdr.gpb_flags |= kGPBDDFlagMask; cdr.gpb_flags |= kGPBDDFlagMask; } cdr.compression_method = file.compression_method; cdr.compression_method = file.compression_method; cdr.last_mod_time = file.last_mod_time; cdr.last_mod_time = file.last_mod_time; cdr.last_mod_date = file.last_mod_date; cdr.last_mod_date = file.last_mod_date; Loading Loading
libziparchive/zip_archive.cc +11 −0 Original line number Original line Diff line number Diff line Loading @@ -573,6 +573,17 @@ static int32_t FindEntry(const ZipArchive* archive, const int ent, // Paranoia: Match the values specified in the local file header // Paranoia: Match the values specified in the local file header // to those specified in the central directory. // to those specified in the central directory. // Verify that the central directory and local file header agree on the use of a trailing // Data Descriptor. if ((lfh->gpb_flags & kGPBDDFlagMask) != (cdr->gpb_flags & kGPBDDFlagMask)) { ALOGW("Zip: gpb flag mismatch. expected {%04" PRIx16 "}, was {%04" PRIx16 "}", cdr->gpb_flags, lfh->gpb_flags); return kInconsistentInformation; } // If there is no trailing data descriptor, verify that the central directory and local file // header agree on the crc, compressed, and uncompressed sizes of the entry. if ((lfh->gpb_flags & kGPBDDFlagMask) == 0) { if ((lfh->gpb_flags & kGPBDDFlagMask) == 0) { data->has_data_descriptor = 0; data->has_data_descriptor = 0; if (data->compressed_length != lfh->compressed_size if (data->compressed_length != lfh->compressed_size Loading
libziparchive/zip_writer.cc +3 −1 Original line number Original line Diff line number Diff line Loading @@ -479,7 +479,9 @@ int32_t ZipWriter::Finish() { for (FileEntry& file : files_) { for (FileEntry& file : files_) { CentralDirectoryRecord cdr = {}; CentralDirectoryRecord cdr = {}; cdr.record_signature = CentralDirectoryRecord::kSignature; cdr.record_signature = CentralDirectoryRecord::kSignature; if ((file.compression_method & kCompressDeflated) || !seekable_) { cdr.gpb_flags |= kGPBDDFlagMask; cdr.gpb_flags |= kGPBDDFlagMask; } cdr.compression_method = file.compression_method; cdr.compression_method = file.compression_method; cdr.last_mod_time = file.last_mod_time; cdr.last_mod_time = file.last_mod_time; cdr.last_mod_date = file.last_mod_date; cdr.last_mod_date = file.last_mod_date; Loading