]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Zip archive: Handle files within folders inside the zip
authorRoopesh Chander <roop@roopc.net>
Sat, 3 Nov 2018 10:07:31 +0000 (15:37 +0530)
committerRoopesh Chander <roop@roopc.net>
Sat, 3 Nov 2018 10:07:31 +0000 (15:37 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/ZipArchive/ZipArchive.swift

index 7f654adc5c00da691133bec4866a76573542f89b..d90780312b07375ff53344e22bf17e2454237770 100644 (file)
@@ -61,10 +61,10 @@ class ZipArchive {
                 throw ZipArchiveError.badArchive
             }
 
-            let fileName = String(cString: fileNameBuffer)
-            let fileExtension = URL(string: fileName)?.pathExtension ?? ""
+            if let fileURL = URL(string: String(cString: fileNameBuffer)),
+                !fileURL.hasDirectoryPath,
+                requiredFileExtensions.contains(fileURL.pathExtension) {
 
-            if (requiredFileExtensions.contains(fileExtension)) {
                 var unzippedData = Data()
                 var bytesRead: Int32 = 0
                 repeat {
@@ -77,7 +77,7 @@ class ZipArchive {
                         unzippedData.append(dataRead)
                     }
                 } while (bytesRead > 0)
-                results.append((fileName: fileName, contents: unzippedData))
+                results.append((fileName: fileURL.lastPathComponent, contents: unzippedData))
             }
 
             guard (unzCloseCurrentFile(zipFile) == UNZ_OK) else {