function SystemArchiverTest::_testArchiverOutOfPath
Helper to test out-of-path extraction protection.
1 call to SystemArchiverTest::_testArchiverOutOfPath()
- SystemArchiverTest::testArchiverOutOfPath in modules/
system/ system.test - Tests out-of-path extraction protection.
File
-
modules/
system/ system.test, line 3259
Class
- SystemArchiverTest
- Test case for Archiver classes.
Code
public function _testArchiverOutOfPath($archive, $message) {
$src_tarball = DRUPAL_ROOT . '/modules/system/tests/' . $archive;
$tarball = file_directory_temp() . '/' . $archive;
file_unmanaged_copy($src_tarball, $tarball);
try {
$archiver = archiver_get_archiver($tarball);
} catch (Exception $e) {
// The file's not there (this is not part of the test).
$this->assertTrue(FALSE, $e);
return;
}
$extract_dir = file_directory_temp() . '/testArchiverTarball';
$caught_exception = FALSE;
try {
// Drupal's \ArchiverTar::extract() doesn't support symlinks, so we have
// to access the underlying Archive_Tar object.
$archiver->getArchive()
->extract($extract_dir, FALSE, TRUE);
} catch (Exception $e) {
$caught_exception = strpos($e->getMessage(), 'Out-of-path file extraction') !== FALSE;
}
$this->assertTrue($caught_exception, $message);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.