Skip to content

Commit 4d73867

Browse files
committed
Merge remote-tracking branch 'origin/MC-34749' into 2.3.6-develop-pr138
2 parents e2497a4 + 84d24c5 commit 4d73867

File tree

1 file changed

+24
-2
lines changed
  • lib/internal/Magento/Framework/Archive

1 file changed

+24
-2
lines changed

lib/internal/Magento/Framework/Archive/Zip.php

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ public function unpack($source, $destination)
5353
{
5454
$zip = new \ZipArchive();
5555
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+
5859
if ($filename) {
5960
$zip->extractTo(dirname($destination), $filename);
6061
} else {
@@ -67,4 +68,25 @@ public function unpack($source, $destination)
6768

6869
return $destination;
6970
}
71+
72+
/**
73+
* Retrieve filename for import from zip archive.
74+
*
75+
* @param \ZipArchive $zip
76+
* @param string $baseName
77+
*
78+
* @return string
79+
*/
80+
private function getFilenameFromZip(\ZipArchive $zip, string $baseName): string
81+
{
82+
$index = 0;
83+
84+
do {
85+
$zip->renameIndex($index, $baseName);
86+
$filename = $zip->getNameIndex($index);
87+
$index++;
88+
} while ($baseName !== $filename && $filename !== false);
89+
90+
return $filename === $baseName ? $filename : '';
91+
}
7092
}

0 commit comments

Comments
 (0)