Skip to content

Commit c749127

Browse files
committed
MC-33909: Fix Integration tests php 7.4
1 parent de89200 commit c749127

File tree

1 file changed

+18
-7
lines changed
  • lib/internal/Magento/Framework/Archive

1 file changed

+18
-7
lines changed

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,23 @@ protected function _unpackCurrentTar($destination)
430430
return $list;
431431
}
432432

433+
/**
434+
* Converts octal numbers to decimal ones for specific header types.
435+
*
436+
* @param array $header
437+
* @return array
438+
*/
439+
private function convertOctToDec(array $header): array
440+
{
441+
$typesToConvert = ['mode', 'uid', 'gid', 'size', 'mtime', 'checksum'];
442+
foreach ($typesToConvert as $type) {
443+
$octNum = preg_replace('/[^0-7]/', '', $header[$type]);
444+
$header[$type] = octdec($octNum);
445+
}
446+
447+
return $header;
448+
}
449+
433450
/**
434451
* Read and decode file header information from tarball
435452
*
@@ -446,13 +463,7 @@ protected function _extractFileHeader()
446463
}
447464

448465
$header = unpack(self::_getFormatParseHeader(), $headerBlock);
449-
450-
$header['mode'] = octdec($header['mode']);
451-
$header['uid'] = octdec($header['uid']);
452-
$header['gid'] = octdec($header['gid']);
453-
$header['size'] = octdec($header['size']);
454-
$header['mtime'] = octdec($header['mtime']);
455-
$header['checksum'] = octdec($header['checksum']);
466+
$header = $this->convertOctToDec($header);
456467

457468
if ($header['type'] == "5") {
458469
$header['size'] = 0;

0 commit comments

Comments
 (0)