diff --git a/.travis.yml b/.travis.yml index 1d26b51..b841f4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,5 +32,6 @@ install: # - pear upgrade --force --alldeps pear/pear - pear install -f package.xml script: + - pear version - pear run-tests -qr tests/ - for i in `find tests/ -name '*.out'`; do echo "$i"; cat "$i"; done diff --git a/Archive/Tar.php b/Archive/Tar.php index 53966c2..3ef278a 100644 --- a/Archive/Tar.php +++ b/Archive/Tar.php @@ -1692,7 +1692,16 @@ public function _readHeader($v_binary_data, &$v_header) } // ----- Extract the checksum - $v_header['checksum'] = OctDec(trim($v_data['checksum'])); + $v_data_checksum = trim($v_data['checksum']); + if (!preg_match('/^[0-7]*$/', $v_data_checksum)) { + $this->_error( + 'Invalid checksum for file "' . $v_data['filename'] + . '" : ' . $v_data_checksum . ' extracted' + ); + return false; + } + + $v_header['checksum'] = OctDec($v_data_checksum); if ($v_header['checksum'] != $v_checksum) { $v_header['filename'] = ''; diff --git a/tests/invalidchecksum.phpt b/tests/invalidchecksum.phpt index 55f4ed4..c70cee7 100644 --- a/tests/invalidchecksum.phpt +++ b/tests/invalidchecksum.phpt @@ -12,7 +12,7 @@ $phpunit->assertErrors(array( array('package' => 'PEAR_Error', 'message' => "Invalid checksum for file \"4&2Vib~Au.=ZqMTw~=}UoF/~5Gs;JTXF*}hm\"#xO7:46y_tg6c-[A&S]z0fke?(B6?$:W$X{E%PO>~UWl8(' . "\n" . - '.%RWPjN55)cd&?oJPgFFZj#+U --CLEAN-- diff --git a/tests/phpt_test.php.inc b/tests/phpt_test.php.inc index 67222e8..8153dd6 100644 --- a/tests/phpt_test.php.inc +++ b/tests/phpt_test.php.inc @@ -8,7 +8,7 @@ class PEAR_PHPTest { var $_diffonly; var $_errors; - function PEAR_PHPTest($diffonly = false, $noStackCatch = false) + function __construct($diffonly = false, $noStackCatch = false) { $this->_diffonly = $diffonly; $this->_errors = array(); diff --git a/tests/setup.php.inc b/tests/setup.php.inc index b2415a9..0c7759b 100644 --- a/tests/setup.php.inc +++ b/tests/setup.php.inc @@ -1,4 +1,5 @@