Skip to content

Commit b540e2e

Browse files
committed
fix(format): validate legacy ZIP signatures before listing or restore
1 parent 1517778 commit b540e2e

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

‎app/Api/PackageController.php‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -341,15 +341,15 @@ public function decrypt(): never
341341
$packageFormat = 'SECURE-PKG-V14';
342342
$result = (new V14PackageReader())->restore($legacyDirectory, $outputDir, $password, $pattern, $recoveryKey);
343343
} elseif (file_exists($legacyArchive) || is_link($legacyArchive)) {
344-
if (is_link($legacyArchive) || !is_file($legacyArchive)) {
344+
if (!PackageArchive::hasZipSignature($legacyArchive)) {
345345
throw new RuntimeException('Legacy package archive is invalid.');
346346
}
347347
$temporaryPackageDir = $this->config['storage']['temp'] . DIRECTORY_SEPARATOR . 'package-' . bin2hex(random_bytes(16));
348348
(new PackageArchive())->extract($legacyArchive, $temporaryPackageDir);
349349
$packageFormat = 'SECURE-PKG-V14';
350350
$result = (new V14PackageReader())->restore($temporaryPackageDir, $outputDir, $password, $pattern, $recoveryKey);
351351
} elseif (file_exists($legacySpkgArchive) || is_link($legacySpkgArchive)) {
352-
if (is_link($legacySpkgArchive) || !is_file($legacySpkgArchive)) {
352+
if (!PackageArchive::hasZipSignature($legacySpkgArchive)) {
353353
throw new RuntimeException('Legacy package archive is invalid.');
354354
}
355355
$temporaryPackageDir = $this->config['storage']['temp'] . DIRECTORY_SEPARATOR . 'package-' . bin2hex(random_bytes(16));
@@ -422,11 +422,11 @@ public function listPackages(): never
422422
$size = false;
423423
$format = 'SECURE-PKG-V14';
424424
} elseif (file_exists($legacyArchive) || is_link($legacyArchive)) {
425-
$available = !is_link($legacyArchive) && is_file($legacyArchive);
425+
$available = PackageArchive::hasZipSignature($legacyArchive);
426426
$size = $available ? @filesize($legacyArchive) : false;
427427
$format = 'SECURE-PKG-V14';
428428
} elseif (file_exists($legacySpkgArchive) || is_link($legacySpkgArchive)) {
429-
$available = !is_link($legacySpkgArchive) && is_file($legacySpkgArchive);
429+
$available = PackageArchive::hasZipSignature($legacySpkgArchive);
430430
$size = $available ? @filesize($legacySpkgArchive) : false;
431431
$format = 'SECURE-PKG-V14';
432432
} else {

0 commit comments

Comments
 (0)