summarylogtreecommitdiffstats
path: root/chromium-152-unbundle-minizip-undo-unicode.patch
blob: f1db80ce5c35cf0a418c4b2986b93214035fc21f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 5ebe0b53a5f4a33faf138191b254a7d4a5285a5f Mon Sep 17 00:00:00 2001
From: LN Liberda <lauren@selfisekai.rocks>
Date: Thu, 27 Aug 2026 08:13:35 +0200
Subject: [PATCH] unbundle/minizip: Ignore Unicode Path Extra Field

The fields come from chromium's patches on minizip
---
 third_party/zlib/google/zip_reader.cc | 34 +--------------------------
 1 file changed, 1 insertion(+), 33 deletions(-)

diff --git a/third_party/zlib/google/zip_reader.cc b/third_party/zlib/google/zip_reader.cc
index 7b5b28967cfbb..2054e3c09e419 100644
--- a/third_party/zlib/google/zip_reader.cc
+++ b/third_party/zlib/google/zip_reader.cc
@@ -314,32 +314,6 @@ bool ZipReader::OpenEntry() {
   bool physical_path_is_directory = false;
   bool physical_path_is_unsafe = false;
 
-  // If an Info-ZIP Unicode Path Extra Field is present, the physical Central
-  // Directory path is about to be overridden. Decode and normalize it now into
-  // `entry_.physical_path` so consumers (e.g. Safe Browsing) can still see the
-  // name that other tools (e.g. Windows Explorer) would use for extraction.
-  if (info.size_utf8_filename > 0) {
-    std::u16string physical_path_in_utf16;
-    if (!base::CodepageToUTF16(entry_.path_in_original_encoding,
-                               configured_encoding,
-                               base::OnStringConversionError::SUBSTITUTE,
-                               &physical_path_in_utf16)) {
-      LOG(ERROR) << "Cannot convert path from encoding " << configured_encoding;
-      return false;
-    }
-    // Normalize() stores the normalized result in entry_.path; copy it before
-    // applying the Unicode Path Extra Field below.
-    Normalize(physical_path_in_utf16);
-    entry_.physical_path = entry_.path;
-    physical_path_is_directory = entry_.is_directory;
-    physical_path_is_unsafe = entry_.is_unsafe;
-
-    // Use the Info-ZIP Unicode Path Extra Field if present.
-    DCHECK(info.utf8_filename[info.size_utf8_filename] == '\0');
-    entry_.path_in_original_encoding = info.utf8_filename;
-    entry_path_encoding = base::kCodepageUTF8;
-  }
-
   // Convert path from original encoding to Unicode.
   std::u16string path_in_utf16;
   if (!base::CodepageToUTF16(entry_.path_in_original_encoding,
@@ -353,13 +327,7 @@ bool ZipReader::OpenEntry() {
   // Normalize path.
   Normalize(path_in_utf16);
 
-  if (info.size_utf8_filename > 0) {
-    // Treat an entry as a directory only if both names are directories;
-    // otherwise callers that analyze file entries should inspect it as a file.
-    entry_.is_directory = entry_.is_directory && physical_path_is_directory;
-    // Treat an entry as unsafe if either name is unsafe.
-    entry_.is_unsafe = entry_.is_unsafe || physical_path_is_unsafe;
-  } else {
+ {
     // In the common case (no Unicode Path Extra Field) the physical path
     // matches the effective path.
     entry_.physical_path = entry_.path;