Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c1b894b authored by Piotr Jastrzebski's avatar Piotr Jastrzebski Committed by Narayan Kamath
Browse files

Reject zip archives with entry names containing \0.

There should never be a need of an entry name with \0 character.

Bug: 16162465

(cherry picked from commit 78271ba9)

Change-Id: I68c72fb45e8ec70eb125cfc887488bc18ba5447d
parent a005e779
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -638,9 +638,15 @@ static int32_t ParseZipArchive(ZipArchive* archive) {
    const uint16_t file_name_length = cdr->file_name_length;
    const uint16_t extra_length = cdr->extra_field_length;
    const uint16_t comment_length = cdr->comment_length;
    const char* file_name = reinterpret_cast<const char*>(ptr + sizeof(CentralDirectoryRecord));

    /* check that file name doesn't contain \0 character */
    if (memchr(file_name, 0, file_name_length) != NULL) {
      ALOGW("Zip: entry name can't contain \\0 character");
      goto bail;
    }

    /* add the CDE filename to the hash table */
    const char* file_name = reinterpret_cast<const char *>(ptr + sizeof(CentralDirectoryRecord));
    const int add_result = AddToHash(archive->hash_table,
        archive->hash_table_size, file_name, file_name_length);
    if (add_result) {