On PHP 7.0, it looks like this code would have raised a warning and
given random results, because it would interpret the first byte of $tail
as the comment length instead of the correct one. Thanks for being
permissive about unrecognized function parameters, PHP!
(The actual reason I found and fixed this is because the phan annotation
here was giving me an error on PHP 7.3: "UnusedPluginSuppression Plugin
BuiltinSuppressionPlugin suppresses issue PhanParamTooManyInternal on
this line but this suppression is unused or suppressed elsewhere".)
Change-Id: I910f78698d1a53e8a90ddf243a4d65be87f29ca9
if ( $eocdrPos !== false ) {
$this->logger->info( __METHOD__ . ": ZIP signature present in $file\n" );
// Check if it really is a ZIP file, make sure the EOCDR is at the end (T40432)
- // FIXME: unpack()'s third argument was added in PHP 7.1
- // @phan-suppress-next-line PhanParamTooManyInternal
- $commentLength = unpack( "n", $tail, $eocdrPos + 20 )[0];
+ $commentLength = unpack( "n", substr( $tail, $eocdrPos + 20 ) )[0];
if ( $eocdrPos + 22 + $commentLength !== strlen( $tail ) ) {
$this->logger->info( __METHOD__ . ": ZIP EOCDR not at end. Not a ZIP file." );
} else {