File tree Expand file tree Collapse file tree 1 file changed +15
-2
lines changed
lib/internal/Magento/Framework/Archive Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -53,8 +53,9 @@ public function unpack($source, $destination)
53
53
{
54
54
$ zip = new \ZipArchive ();
55
55
if ($ zip ->open ($ source ) === true ) {
56
- $ zip ->renameIndex (0 , basename ($ destination ));
57
- $ filename = $ zip ->getNameIndex (0 ) ?: '' ;
56
+ $ baseName = basename ($ destination );
57
+ $ filename = $ this ->getFilenameFromZip ($ zip , $ baseName );
58
+
58
59
if ($ filename ) {
59
60
$ zip ->extractTo (dirname ($ destination ), $ filename );
60
61
} else {
@@ -67,4 +68,16 @@ public function unpack($source, $destination)
67
68
68
69
return $ destination ;
69
70
}
71
+
72
+ private function getFilenameFromZip (\ZipArchive $ zip , string $ baseName ): string
73
+ {
74
+ $ index = 0 ;
75
+
76
+ do {
77
+ $ filename = $ zip ->getNameIndex ($ index );
78
+ $ index ++;
79
+ } while ($ baseName !== $ filename && $ filename !== false );
80
+
81
+ return $ filename === $ baseName ? $ filename : '' ;
82
+ }
70
83
}
You can’t perform that action at this time.
0 commit comments