diff --git a/www7/includes/bootstrap.inc b/www7/includes/bootstrap.inc index 6891f1277..8b05bc5c6 100644 --- a/www7/includes/bootstrap.inc +++ b/www7/includes/bootstrap.inc @@ -8,7 +8,7 @@ /** * The current system version. */ -define('VERSION', '7.63'); +define('VERSION', '7.67'); /** * Core API compatibility. diff --git a/www7/includes/common.inc b/www7/includes/common.inc index c5b4ff26e..44ff46078 100644 --- a/www7/includes/common.inc +++ b/www7/includes/common.inc @@ -1094,6 +1094,11 @@ function drupal_http_request($url, array $options = array()) { elseif ($options['max_redirects']) { // Redirect to the new location. $options['max_redirects']--; + + // We need to unset the 'Host' header + // as we are redirecting to a new location. + unset($options['headers']['Host']); + $result = drupal_http_request($location, $options); $result->redirect_code = $code; } diff --git a/www7/includes/file.inc b/www7/includes/file.inc index 50a3b768a..95bb65843 100644 --- a/www7/includes/file.inc +++ b/www7/includes/file.inc @@ -993,8 +993,15 @@ function file_build_uri($path) { * @return * The destination filepath, or FALSE if the file already exists * and FILE_EXISTS_ERROR is specified. + * + * @throws RuntimeException + * Thrown if the filename contains invalid UTF-8. */ function file_destination($destination, $replace) { + $basename = drupal_basename($destination); + if (!drupal_validate_utf8($basename)) { + throw new RuntimeException(sprintf("Invalid filename '%s'", $basename)); + } if (file_exists($destination)) { switch ($replace) { case FILE_EXISTS_REPLACE: @@ -1002,7 +1009,6 @@ function file_destination($destination, $replace) { break; case FILE_EXISTS_RENAME: - $basename = drupal_basename($destination); $directory = drupal_dirname($destination); $destination = file_create_filename($basename, $directory); break; @@ -1218,11 +1224,20 @@ function file_unmunge_filename($filename) { * @return * File path consisting of $directory and a unique filename based off * of $basename. + * + * @throws RuntimeException + * Thrown if the $basename is not valid UTF-8 or another error occurs + * stripping control characters. */ function file_create_filename($basename, $directory) { + $original = $basename; // Strip control characters (ASCII value < 32). Though these are allowed in // some filesystems, not many applications handle them well. $basename = preg_replace('/[\x00-\x1F]/u', '_', $basename); + if (preg_last_error() !== PREG_NO_ERROR) { + throw new RuntimeException(sprintf("Invalid filename '%s'", $original)); + } + if (substr(PHP_OS, 0, 3) == 'WIN') { // These characters are not allowed in Windows filenames $basename = str_replace(array(':', '*', '?', '"', '<', '>', '|'), '_', $basename); @@ -1563,7 +1578,13 @@ function file_save_upload($form_field_name, $validators = array(), $destination if (substr($destination, -1) != '/') { $destination .= '/'; } - $file->destination = file_destination($destination . $file->filename, $replace); + try { + $file->destination = file_destination($destination . $file->filename, $replace); + } + catch (RuntimeException $e) { + drupal_set_message(t('The file %source could not be uploaded because the name is invalid.', array('%source' => $form_field_name)), 'error'); + return FALSE; + } // If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and // there's an existing file so we need to bail. if ($file->destination === FALSE) { @@ -2130,9 +2151,33 @@ function file_download_access($uri) { * 'filename', and 'name' members corresponding to the matching files. */ function file_scan_directory($dir, $mask, $options = array(), $depth = 0) { + // Default nomask option. + $nomask = '/(\.\.?|CVS)$/'; + + // Overrides the $nomask variable accordingly if $options['nomask'] is set. + // + // Allow directories specified in settings.php to be ignored. You can use this + // to not check for files in common special-purpose directories. For example, + // node_modules and bower_components. Ignoring irrelevant directories is a + // performance boost. + if (!isset($options['nomask'])) { + $ignore_directories = variable_get( + 'file_scan_ignore_directories', + array() + ); + + foreach ($ignore_directories as $index => $ignore_directory) { + $ignore_directories[$index] = preg_quote($ignore_directory, '/'); + } + + if (!empty($ignore_directories)) { + $nomask = '/^(\.\.?)|CVS|' . implode('|', $ignore_directories) . '$/'; + } + } + // Merge in defaults. $options += array( - 'nomask' => '/(\.\.?|CVS)$/', + 'nomask' => $nomask, 'callback' => 0, 'recurse' => TRUE, 'key' => 'uri', diff --git a/www7/includes/file.phar.inc b/www7/includes/file.phar.inc index 3d7ba01d4..a0b0e12fa 100644 --- a/www7/includes/file.phar.inc +++ b/www7/includes/file.phar.inc @@ -18,7 +18,21 @@ function file_register_phar_wrapper() { include_once $directory . '/Helper.php'; include_once $directory . '/Manager.php'; include_once $directory . '/PharStreamWrapper.php'; + include_once $directory . '/Collectable.php'; + include_once $directory . '/Interceptor/ConjunctionInterceptor.php'; + include_once $directory . '/Interceptor/PharMetaDataInterceptor.php'; + include_once $directory . '/Phar/Container.php'; + include_once $directory . '/Phar/DeserializationException.php'; + include_once $directory . '/Phar/Manifest.php'; + include_once $directory . '/Phar/Reader.php'; + include_once $directory . '/Phar/ReaderException.php'; + include_once $directory . '/Phar/Stub.php'; + include_once $directory . '/Resolvable.php'; + include_once $directory . '/Resolver/PharInvocation.php'; + include_once $directory . '/Resolver/PharInvocationCollection.php'; + include_once $directory . '/Resolver/PharInvocationResolver.php'; include_once DRUPAL_ROOT . '/misc/typo3/drupal-security/PharExtensionInterceptor.php'; + include_once DRUPAL_ROOT . '/misc/brumann/polyfill-unserialize/src/Unserialize.php'; // Set up a stream wrapper to handle insecurities due to PHP's built-in // phar stream wrapper. diff --git a/www7/includes/registry.inc b/www7/includes/registry.inc index 29a1fca8c..ee678e891 100644 --- a/www7/includes/registry.inc +++ b/www7/includes/registry.inc @@ -19,7 +19,6 @@ * Does the work for registry_update(). */ function _registry_update() { - // The registry serves as a central autoloader for all classes, including // the database query builders. However, the registry rebuild process // requires write ability to the database, which means having access to the @@ -33,6 +32,11 @@ function _registry_update() { require_once DRUPAL_ROOT . '/includes/database/select.inc'; require_once DRUPAL_ROOT . '/includes/database/' . $driver . '/query.inc'; + // During the first registry rebuild in a request, we check all the files. + // During subsequent rebuilds, we only add new files. It makes the rebuilding + // process faster during installation of modules. + static $check_existing_files = TRUE; + // Get current list of modules and their files. $modules = db_query("SELECT * FROM {system} WHERE type = 'module'")->fetchAll(); // Get the list of files we are going to parse. @@ -55,6 +59,9 @@ function _registry_update() { $files["$filename"] = array('module' => '', 'weight' => 0); } + // Initialize an empty array for the unchanged files. + $unchanged_files = array(); + $transaction = db_transaction(); try { // Allow modules to manually modify the list of files before the registry @@ -63,10 +70,19 @@ function _registry_update() { // list can then be added to the list of files that the registry will parse, // or modify attributes of a file. drupal_alter('registry_files', $files, $modules); + foreach (registry_get_parsed_files() as $filename => $file) { // Add the hash for those files we have already parsed. if (isset($files[$filename])) { - $files[$filename]['hash'] = $file['hash']; + if ($check_existing_files === TRUE) { + $files[$filename]['hash'] = $file['hash']; + } + else { + // Ignore that file for this request, it has been parsed previously + // and it is unlikely it has changed. + unset($files[$filename]); + $unchanged_files[$filename] = $file; + } } else { // Flush the registry of resources in files that are no longer on disc @@ -79,8 +95,12 @@ function _registry_update() { ->execute(); } } + $parsed_files = _registry_parse_files($files); + // Add unchanged files to the files. + $files += $unchanged_files; + $unchanged_resources = array(); $lookup_cache = array(); if ($cache = cache_get('lookup_cache', 'cache_bootstrap')) { @@ -89,12 +109,10 @@ function _registry_update() { foreach ($lookup_cache as $key => $file) { // If the file for this cached resource is carried over unchanged from // the last registry build, then we can safely re-cache it. - if ($file && in_array($file, array_keys($files)) && !in_array($file, $parsed_files)) { + if ($file && isset($files[$file]) && !in_array($file, $parsed_files, TRUE)) { $unchanged_resources[$key] = $file; } } - module_implements('', FALSE, TRUE); - _registry_check_code(REGISTRY_RESET_LOOKUP_CACHE); } catch (Exception $e) { $transaction->rollback(); @@ -102,6 +120,13 @@ function _registry_update() { throw $e; } + module_implements('', FALSE, TRUE); + _registry_check_code(REGISTRY_RESET_LOOKUP_CACHE); + + // During the next run in this request, don't bother re-checking existing + // files. + $check_existing_files = FALSE; + // We have some unchanged resources, warm up the cache - no need to pay // for looking them up again. if (count($unchanged_resources) > 0) { diff --git a/www7/misc/brumann/polyfill-unserialize/.gitignore b/www7/misc/brumann/polyfill-unserialize/.gitignore new file mode 100644 index 000000000..767699f1b --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/.gitignore @@ -0,0 +1,4 @@ +/vendor/ +/phpunit.xml +/.composer.lock + diff --git a/www7/misc/brumann/polyfill-unserialize/.travis.yml b/www7/misc/brumann/polyfill-unserialize/.travis.yml new file mode 100644 index 000000000..352536f45 --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/.travis.yml @@ -0,0 +1,20 @@ +language: php + +sudo: false + +php: + - '5.3' + - '5.4' + - '5.5' + - '5.6' + - '7.0' + - '7.1' + +before_install: + - phpenv config-rm xdebug.ini + - composer self-update + +install: + - composer install + +script: phpunit diff --git a/www7/misc/brumann/polyfill-unserialize/LICENSE b/www7/misc/brumann/polyfill-unserialize/LICENSE new file mode 100644 index 000000000..0cb53d3b0 --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Denis Brumann + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/www7/misc/brumann/polyfill-unserialize/README.md b/www7/misc/brumann/polyfill-unserialize/README.md new file mode 100644 index 000000000..bac25fe04 --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/README.md @@ -0,0 +1,61 @@ +Polyfill unserialize [![Build Status](https://travis-ci.org/dbrumann/polyfill-unserialize.svg?branch=master)](https://travis-ci.org/dbrumann/polyfill-unserialize) +=== + +Backports unserialize options introduced in PHP 7.0 to older PHP versions. +This was originally designed as a Proof of Concept for Symfony Issue [#21090](https://github.com/symfony/symfony/pull/21090). + +You can use this package in projects that rely on PHP versions older than PHP 7.0. +In case you are using PHP 7.0+ the original `unserialize()` will be used instead. + +From the [documentation](https://secure.php.net/manual/en/function.unserialize.php): + +> Warning: Do not pass untrusted user input to unserialize(). Unserialization can +> result in code being loaded and executed due to object instantiation +> and autoloading, and a malicious user may be able to exploit this. + +This warning holds true even when `allowed_classes` is used. + +Requirements +------------ + + - PHP 5.3+ + +Installation +------------ + +You can install this package via composer: + +``` +composer require brumann/polyfill-unserialize "^1.0" +``` + +Known Issues +------------ + +There is a mismatch in behavior when `allowed_classes` in `$options` is not +of the correct type (array or boolean). PHP 7.1 will issue a warning, whereas +PHP 7.0 will not. I opted to copy the behavior of the former. + +Tests +----- + +You can run the test suite using PHPUnit. It is intentionally not bundled as +dev dependency to make sure this package has the lowest restrictions on the +implementing system as possible. + +Please read the [PHPUnit Manual](https://phpunit.de/manual/current/en/installation.html) +for information how to install it on your system. + +You can run the test suite as follows: + +``` +phpunit -c phpunit.xml.dist tests/ +``` + +Contributing +------------ + +This package is considered feature complete. As such I will likely not update it +unless there are security issues. + +Should you find any bugs or have questions, feel free to submit an Issue or a Pull Request. diff --git a/www7/misc/brumann/polyfill-unserialize/composer.json b/www7/misc/brumann/polyfill-unserialize/composer.json new file mode 100644 index 000000000..ec4a2cf0e --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/composer.json @@ -0,0 +1,26 @@ +{ + "name": "brumann/polyfill-unserialize", + "description": "Backports unserialize options introduced in PHP 7.0 to older PHP versions.", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Denis Brumann", + "email": "denis.brumann@sensiolabs.de" + } + ], + "autoload": { + "psr-4": { + "Brumann\\Polyfill\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\Brumann\\Polyfill\\": "tests/" + } + }, + "minimum-stability": "stable", + "require": { + "php": "^5.3|^7.0" + } +} diff --git a/www7/misc/brumann/polyfill-unserialize/phpunit.xml.dist b/www7/misc/brumann/polyfill-unserialize/phpunit.xml.dist new file mode 100644 index 000000000..8fea1bab8 --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/phpunit.xml.dist @@ -0,0 +1,25 @@ + + + + + + + + + + ./tests/ + + + + + + ./src/ + + + diff --git a/www7/misc/brumann/polyfill-unserialize/src/Unserialize.php b/www7/misc/brumann/polyfill-unserialize/src/Unserialize.php new file mode 100644 index 000000000..e025d55ed --- /dev/null +++ b/www7/misc/brumann/polyfill-unserialize/src/Unserialize.php @@ -0,0 +1,58 @@ += 70000) { + return \unserialize($serialized, $options); + } + if (!array_key_exists('allowed_classes', $options)) { + $options['allowed_classes'] = true; + } + $allowedClasses = $options['allowed_classes']; + if (true === $allowedClasses) { + return \unserialize($serialized); + } + if (false === $allowedClasses) { + $allowedClasses = array(); + } + if (!is_array($allowedClasses)) { + trigger_error( + 'unserialize(): allowed_classes option should be array or boolean', + E_USER_WARNING + ); + $allowedClasses = array(); + } + + $sanitizedSerialized = preg_replace_callback( + '/(^|;)O:\d+:"([^"]*)":(\d+):{/', + function ($match) use ($allowedClasses) { + list($completeMatch, $leftBorder, $className, $objectSize) = $match; + if (in_array($className, $allowedClasses)) { + return $completeMatch; + } else { + return sprintf( + '%sO:22:"__PHP_Incomplete_Class":%d:{s:27:"__PHP_Incomplete_Class_Name";%s', + $leftBorder, + $objectSize + 1, // size of object + 1 for added string + \serialize($className) + ); + } + }, + $serialized + ); + + return \unserialize($sanitizedSerialized); + } +} diff --git a/www7/misc/jquery-extend-3.4.0.js b/www7/misc/jquery-extend-3.4.0.js new file mode 100644 index 000000000..975910949 --- /dev/null +++ b/www7/misc/jquery-extend-3.4.0.js @@ -0,0 +1,112 @@ +/** + * For jQuery versions less than 3.4.0, this replaces the jQuery.extend + * function with the one from jQuery 3.4.0, slightly modified (documented + * below) to be compatible with older jQuery versions and browsers. + * + * This provides the Object.prototype pollution vulnerability fix to Drupal + * installations running older jQuery versions, including the versions shipped + * with Drupal core and https://www.drupal.org/project/jquery_update. + * + * @see https://github.com/jquery/jquery/pull/4333 + */ + +(function (jQuery) { + +// Do not override jQuery.extend() if the jQuery version is already >=3.4.0. +var versionParts = jQuery.fn.jquery.split('.'); +var majorVersion = parseInt(versionParts[0]); +var minorVersion = parseInt(versionParts[1]); +var patchVersion = parseInt(versionParts[2]); +var isPreReleaseVersion = (patchVersion.toString() !== versionParts[2]); +if ( + (majorVersion > 3) || + (majorVersion === 3 && minorVersion > 4) || + (majorVersion === 3 && minorVersion === 4 && patchVersion > 0) || + (majorVersion === 3 && minorVersion === 4 && patchVersion === 0 && !isPreReleaseVersion) +) { + return; +} + +/** + * This is almost verbatim copied from jQuery 3.4.0. + * + * Only two minor changes have been made: + * - The call to isFunction() is changed to jQuery.isFunction(). + * - The two calls to Array.isArray() is changed to jQuery.isArray(). + * + * The above two changes ensure compatibility with all older jQuery versions + * (1.4.4 - 3.3.1) and older browser versions (e.g., IE8). + */ +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !jQuery.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +})(jQuery); diff --git a/www7/misc/typo3/phar-stream-wrapper/.gitignore b/www7/misc/typo3/phar-stream-wrapper/.gitignore new file mode 100644 index 000000000..157ff0c59 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/.gitignore @@ -0,0 +1,3 @@ +.idea +vendor/ +composer.lock diff --git a/www7/misc/typo3/phar-stream-wrapper/README.md b/www7/misc/typo3/phar-stream-wrapper/README.md index b632784bd..179bb6fd7 100644 --- a/www7/misc/typo3/phar-stream-wrapper/README.md +++ b/www7/misc/typo3/phar-stream-wrapper/README.md @@ -63,7 +63,7 @@ adjusted to according requirements. ``` $behavior = new \TYPO3\PharStreamWrapper\Behavior(); -Manager::initialize( +\TYPO3\PharStreamWrapper\Manager::initialize( $behavior->withAssertion(new PharExtensionInterceptor()) ); @@ -90,7 +90,7 @@ if (in_array('phar', stream_get_wrappers())) { + `COMMAND_UNLINK` + `COMMAND_URL_STAT` -## Interceptor +## Interceptors The following interceptor is shipped with the package and ready to use in order to block any Phar invocation of files not having a `.phar` suffix. Besides that @@ -137,9 +137,72 @@ class PharExtensionInterceptor implements Assertable } ``` +### ConjunctionInterceptor + +This interceptor combines multiple interceptors implementing `Assertable`. +It succeeds when all nested interceptors succeed as well (logical `AND`). + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new ConjunctionInterceptor(array( + new PharExtensionInterceptor(), + new PharMetaDataInterceptor() + ))) +); +``` + +### PharExtensionInterceptor + +This (basic) interceptor just checks whether the invoked Phar archive has +an according `.phar` file extension. Resolving symbolic links as well as +Phar internal alias resolving are considered as well. + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new PharExtensionInterceptor()) +); +``` + +### PharMetaDataInterceptor + +This interceptor is actually checking serialized Phar meta-data against +PHP objects and would consider a Phar archive malicious in case not only +scalar values are found. A custom low-level `Phar\Reader` is used in order to +avoid using PHP's `Phar` object which would trigger the initial vulnerability. + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new PharMetaDataInterceptor()) +); +``` + +## Reader + +* `Phar\Reader::__construct(string $fileName)`: Creates low-level reader for Phar archive +* `Phar\Reader::resolveContainer(): Phar\Container`: Resolves model representing Phar archive +* `Phar\Container::getStub(): Phar\Stub`: Resolves (plain PHP) stub section of Phar archive +* `Phar\Container::getManifest(): Phar\Manifest`: Resolves parsed Phar archive manifest as + documented at http://php.net/manual/en/phar.fileformat.manifestfile.php +* `Phar\Stub::getMappedAlias(): string`: Resolves internal Phar archive alias defined in stub + using `Phar::mapPhar('alias.phar')` - actually the plain PHP source is analyzed here +* `Phar\Manifest::getAlias(): string` - Resolves internal Phar archive alias defined in manifest + using `Phar::setAlias('alias.phar')` +* `Phar\Manifest::getMetaData(): string`: Resolves serialized Phar archive meta-data +* `Phar\Manifest::deserializeMetaData(): mixed`: Resolves deserialized Phar archive meta-data + containing only scalar values - in case an object is determined, an according + `Phar\DeserializationException` will be thrown + +``` +$reader = new Phar\Reader('example.phar'); +var_dump($reader->resolveContainer()->getManifest()->deserializeMetaData()); +``` + ## Helper -* `Helper::determineBaseFile(string $path)`: Determines base file that can be +* `Helper::determineBaseFile(string $path): string`: Determines base file that can be accessed using the regular file system. For instance the following path `phar:///home/user/bundle.phar/content.txt` would be resolved to `/home/user/bundle.phar`. diff --git a/www7/misc/typo3/phar-stream-wrapper/composer.json b/www7/misc/typo3/phar-stream-wrapper/composer.json index d308f8c87..8c2241187 100644 --- a/www7/misc/typo3/phar-stream-wrapper/composer.json +++ b/www7/misc/typo3/phar-stream-wrapper/composer.json @@ -6,9 +6,13 @@ "homepage": "https://typo3.org/", "keywords": ["php", "phar", "stream-wrapper", "security"], "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3|^7.0", + "ext-fileinfo": "*", + "ext-json": "*", + "brumann/polyfill-unserialize": "^1.0" }, "require-dev": { + "ext-xdebug": "*", "phpunit/phpunit": "^4.8.36" }, "autoload": { diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Collectable.php b/www7/misc/typo3/phar-stream-wrapper/src/Collectable.php new file mode 100644 index 000000000..4694dc946 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Collectable.php @@ -0,0 +1,37 @@ +assertAssertions($assertions); + $this->assertions = $assertions; + } + + /** + * Executes assertions based on all contained assertions. + * + * @param string $path + * @param string $command + * @return bool + * @throws Exception + */ + public function assert($path, $command) + { + if ($this->invokeAssertions($path, $command)) { + return true; + } + throw new Exception( + sprintf( + 'Assertion failed in "%s"', + $path + ), + 1539625084 + ); + } + + /** + * @param Assertable[] $assertions + */ + private function assertAssertions(array $assertions) + { + foreach ($assertions as $assertion) { + if (!$assertion instanceof Assertable) { + throw new \InvalidArgumentException( + sprintf( + 'Instance %s must implement Assertable', + get_class($assertion) + ), + 1539624719 + ); + } + } + } + + /** + * @param string $path + * @param string $command + * @return bool + */ + private function invokeAssertions($path, $command) + { + try { + foreach ($this->assertions as $assertion) { + if (!$assertion->assert($path, $command)) { + return false; + } + } + } catch (Exception $exception) { + return false; + } + return true; + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php b/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php index db500afc8..6e7aeedcb 100644 --- a/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php +++ b/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php @@ -12,8 +12,8 @@ */ use TYPO3\PharStreamWrapper\Assertable; -use TYPO3\PharStreamWrapper\Helper; use TYPO3\PharStreamWrapper\Exception; +use TYPO3\PharStreamWrapper\Manager; class PharExtensionInterceptor implements Assertable { @@ -45,11 +45,11 @@ public function assert($path, $command) */ private function baseFileContainsPharExtension($path) { - $baseFile = Helper::determineBaseFile($path); - if ($baseFile === null) { + $invocation = Manager::instance()->resolve($path); + if ($invocation === null) { return false; } - $fileExtension = pathinfo($baseFile, PATHINFO_EXTENSION); + $fileExtension = pathinfo($invocation->getBaseName(), PATHINFO_EXTENSION); return strtolower($fileExtension) === 'phar'; } } diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php b/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php new file mode 100644 index 000000000..e981dc6a6 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php @@ -0,0 +1,73 @@ +baseFileDoesNotHaveMetaDataIssues($path)) { + return true; + } + throw new Exception( + sprintf( + 'Problematic meta-data in "%s"', + $path + ), + 1539632368 + ); + } + + /** + * @param string $path + * @return bool + */ + private function baseFileDoesNotHaveMetaDataIssues($path) + { + $invocation = Manager::instance()->resolve($path); + if ($invocation === null) { + return false; + } + // directly return in case invocation was checked before + if ($invocation->getVariable(__CLASS__) === true) { + return true; + } + // otherwise analyze meta-data + try { + $reader = new Reader($invocation->getBaseName()); + $reader->resolveContainer()->getManifest()->deserializeMetaData(); + $invocation->setVariable(__CLASS__, true); + } catch (DeserializationException $exception) { + return false; + } + return true; + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Manager.php b/www7/misc/typo3/phar-stream-wrapper/src/Manager.php index 1eb9735d9..f938ad985 100644 --- a/www7/misc/typo3/phar-stream-wrapper/src/Manager.php +++ b/www7/misc/typo3/phar-stream-wrapper/src/Manager.php @@ -11,7 +11,11 @@ * The TYPO3 project - inspiring people to share! */ -class Manager implements Assertable +use TYPO3\PharStreamWrapper\Resolver\PharInvocation; +use TYPO3\PharStreamWrapper\Resolver\PharInvocationCollection; +use TYPO3\PharStreamWrapper\Resolver\PharInvocationResolver; + +class Manager { /** * @var self @@ -23,14 +27,29 @@ class Manager implements Assertable */ private $behavior; + /** + * @var Resolvable + */ + private $resolver; + + /** + * @var Collectable + */ + private $collection; + /** * @param Behavior $behaviour + * @param Resolvable $resolver + * @param Collectable $collection * @return self */ - public static function initialize(Behavior $behaviour) - { + public static function initialize( + Behavior $behaviour, + Resolvable $resolver = null, + Collectable $collection = null + ) { if (self::$instance === null) { - self::$instance = new self($behaviour); + self::$instance = new self($behaviour, $resolver, $collection); return self::$instance; } throw new \LogicException( @@ -67,9 +86,22 @@ public static function destroy() /** * @param Behavior $behaviour + * @param Resolvable $resolver + * @param Collectable $collection */ - private function __construct(Behavior $behaviour) - { + private function __construct( + Behavior $behaviour, + Resolvable $resolver = null, + Collectable $collection = null + ) { + if ($collection === null) { + $collection = new PharInvocationCollection(); + } + if ($resolver === null) { + $resolver = new PharInvocationResolver(); + } + $this->collection = $collection; + $this->resolver = $resolver; $this->behavior = $behaviour; } @@ -82,4 +114,22 @@ public function assert($path, $command) { return $this->behavior->assert($path, $command); } + + /** + * @param string $path + * @param null|int $flags + * @return null|PharInvocation + */ + public function resolve($path, $flags = null) + { + return $this->resolver->resolve($path, $flags); + } + + /** + * @return Collectable + */ + public function getCollection() + { + return $this->collection; + } } diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Phar/Container.php b/www7/misc/typo3/phar-stream-wrapper/src/Phar/Container.php new file mode 100644 index 000000000..f02387d73 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Phar/Container.php @@ -0,0 +1,59 @@ +stub = $stub; + $this->manifest = $manifest; + } + + /** + * @return Stub + */ + public function getStub() + { + return $this->stub; + } + + /** + * @return Manifest + */ + public function getManifest() + { + return $this->manifest; + } + + /** + * @return string + */ + public function getAlias() + { + return $this->manifest->getAlias() ?: $this->stub->getMappedAlias(); + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php b/www7/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php new file mode 100644 index 000000000..5a675d34f --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php @@ -0,0 +1,18 @@ +manifestLength = Reader::resolveFourByteLittleEndian($content, 0); + $target->amountOfFiles = Reader::resolveFourByteLittleEndian($content, 4); + $target->flags = Reader::resolveFourByteLittleEndian($content, 10); + $target->aliasLength = Reader::resolveFourByteLittleEndian($content, 14); + $target->alias = substr($content, 18, $target->aliasLength); + $target->metaDataLength = Reader::resolveFourByteLittleEndian($content, 18 + $target->aliasLength); + $target->metaData = substr($content, 22 + $target->aliasLength, $target->metaDataLength); + + $apiVersionNibbles = Reader::resolveTwoByteBigEndian($content, 8); + $target->apiVersion = implode('.', array( + ($apiVersionNibbles & 0xf000) >> 12, + ($apiVersionNibbles & 0x0f00) >> 8, + ($apiVersionNibbles & 0x00f0) >> 4, + )); + + return $target; + } + + /** + * @var int + */ + private $manifestLength; + + /** + * @var int + */ + private $amountOfFiles; + + /** + * @var string + */ + private $apiVersion; + + /** + * @var int + */ + private $flags; + + /** + * @var int + */ + private $aliasLength; + + /** + * @var string + */ + private $alias; + + /** + * @var int + */ + private $metaDataLength; + + /** + * @var string + */ + private $metaData; + + /** + * Avoid direct instantiation. + */ + private function __construct() + { + } + + /** + * @return int + */ + public function getManifestLength() + { + return $this->manifestLength; + } + + /** + * @return int + */ + public function getAmountOfFiles() + { + return $this->amountOfFiles; + } + + /** + * @return string + */ + public function getApiVersion() + { + return $this->apiVersion; + } + + /** + * @return int + */ + public function getFlags() + { + return $this->flags; + } + + /** + * @return int + */ + public function getAliasLength() + { + return $this->aliasLength; + } + + /** + * @return string + */ + public function getAlias() + { + return $this->alias; + } + + /** + * @return int + */ + public function getMetaDataLength() + { + return $this->metaDataLength; + } + + /** + * @return string + */ + public function getMetaData() + { + return $this->metaData; + } + + /** + * @return mixed|null + */ + public function deserializeMetaData() + { + if (empty($this->metaData)) { + return null; + } + + $result = Unserialize::unserialize($this->metaData, array('allowed_classes' => false)); + + $serialized = json_encode($result); + if (strpos($serialized, '__PHP_Incomplete_Class_Name') !== false) { + throw new DeserializationException( + 'Meta-data contains serialized object', + 1539623382 + ); + } + + return $result; + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php b/www7/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php new file mode 100644 index 000000000..32e516be3 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php @@ -0,0 +1,220 @@ +fileName = $fileName; + $this->fileType = $this->determineFileType(); + } + + /** + * @return Container + */ + public function resolveContainer() + { + $data = $this->extractData($this->resolveStream() . $this->fileName); + + if ($data['stubContent'] === null) { + throw new ReaderException( + 'Cannot resolve stub', + 1547807881 + ); + } + if ($data['manifestContent'] === null || $data['manifestLength'] === null) { + throw new ReaderException( + 'Cannot resolve manifest', + 1547807882 + ); + } + if (strlen($data['manifestContent']) < $data['manifestLength']) { + throw new ReaderException( + sprintf( + 'Exected manifest length %d, got %d', + strlen($data['manifestContent']), + $data['manifestLength'] + ), + 1547807883 + ); + } + + return new Container( + Stub::fromContent($data['stubContent']), + Manifest::fromContent($data['manifestContent']) + ); + } + + /** + * @param string $fileName e.g. '/path/file.phar' or 'compress.zlib:///path/file.phar' + * @return array + */ + private function extractData($fileName) + { + $stubContent = null; + $manifestContent = null; + $manifestLength = null; + + $resource = fopen($fileName, 'r'); + if (!is_resource($resource)) { + throw new ReaderException( + sprintf('Resource %s could not be opened', $fileName), + 1547902055 + ); + } + + while (!feof($resource)) { + $line = fgets($resource); + // stop reading file when manifest can be extracted + if ($manifestLength !== null && $manifestContent !== null && strlen($manifestContent) >= $manifestLength) { + break; + } + + $manifestPosition = strpos($line, '__HALT_COMPILER();'); + + // first line contains start of manifest + if ($stubContent === null && $manifestContent === null && $manifestPosition !== false) { + $stubContent = substr($line, 0, $manifestPosition - 1); + $manifestContent = preg_replace('#^.*__HALT_COMPILER\(\);(?>[ \n]\?>(?>\r\n|\n)?)?#', '', $line); + $manifestLength = $this->resolveManifestLength($manifestContent); + // line contains start of stub + } elseif ($stubContent === null) { + $stubContent = $line; + // line contains start of manifest + } elseif ($manifestContent === null && $manifestPosition !== false) { + $manifestContent = preg_replace('#^.*__HALT_COMPILER\(\);(?>[ \n]\?>(?>\r\n|\n)?)?#', '', $line); + $manifestLength = $this->resolveManifestLength($manifestContent); + // manifest has been started (thus is cannot be stub anymore), add content + } elseif ($manifestContent !== null) { + $manifestContent .= $line; + $manifestLength = $this->resolveManifestLength($manifestContent); + // stub has been started (thus cannot be manifest here, yet), add content + } elseif ($stubContent !== null) { + $stubContent .= $line; + } + } + fclose($resource); + + return array( + 'stubContent' => $stubContent, + 'manifestContent' => $manifestContent, + 'manifestLength' => $manifestLength, + ); + } + + /** + * Resolves stream in order to handle compressed Phar archives. + * + * @return string + */ + private function resolveStream() + { + if ($this->fileType === 'application/x-gzip') { + return 'compress.zlib://'; + } elseif ($this->fileType === 'application/x-bzip2') { + return 'compress.bzip2://'; + } + return ''; + } + + /** + * @return string + */ + private function determineFileType() + { + $fileInfo = new \finfo(); + return $fileInfo->file($this->fileName, FILEINFO_MIME_TYPE); + } + + /** + * @param string $content + * @return int|null + */ + private function resolveManifestLength($content) + { + if (strlen($content) < 4) { + return null; + } + return static::resolveFourByteLittleEndian($content, 0); + } + + /** + * @param string $content + * @param int $start + * @return int + */ + public static function resolveFourByteLittleEndian($content, $start) + { + $payload = substr($content, $start, 4); + if (!is_string($payload)) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614260 + ); + } + + $value = unpack('V', $payload); + if (!isset($value[1])) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614261 + ); + } + return $value[1]; + } + + /** + * @param string $content + * @param int $start + * @return int + */ + public static function resolveTwoByteBigEndian($content, $start) + { + $payload = substr($content, $start, 2); + if (!is_string($payload)) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614263 + ); + } + + $value = unpack('n', $payload); + if (!isset($value[1])) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614264 + ); + } + return $value[1]; + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php b/www7/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php new file mode 100644 index 000000000..002afe158 --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php @@ -0,0 +1,18 @@ +content = $content; + + if ( + stripos($content, 'Phar::mapPhar(') !== false + && preg_match('#Phar\:\:mapPhar\(([^)]+)\)#', $content, $matches) + ) { + // remove spaces, single & double quotes + // @todo `'my' . 'alias' . '.phar'` is not evaluated here + $target->mappedAlias = trim($matches[1], ' \'"'); + } + + return $target; + } + + /** + * @var string + */ + private $content; + + /** + * @var string + */ + private $mappedAlias = ''; + + /** + * @return string + */ + public function getContent() + { + return $this->content; + } + + /** + * @return string + */ + public function getMappedAlias() + { + return $this->mappedAlias; + } +} diff --git a/www7/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php b/www7/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php index 5a924e4cc..acd5656f4 100644 --- a/www7/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php +++ b/www7/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php @@ -11,6 +11,8 @@ * The TYPO3 project - inspiring people to share! */ +use TYPO3\PharStreamWrapper\Resolver\PharInvocation; + class PharStreamWrapper { /** @@ -29,6 +31,11 @@ class PharStreamWrapper */ protected $internalResource; + /** + * @var PharInvocation + */ + protected $invocation; + /** * @return bool */ @@ -409,7 +416,8 @@ public function url_stat($path, $flags) */ protected function assert($path, $command) { - if ($this->resolveAssertable()->assert($path, $command) === true) { + if (Manager::instance()->assert($path, $command) === true) { + $this->collectInvocation($path); return; } @@ -424,7 +432,33 @@ protected function assert($path, $command) } /** - * @return Assertable + * @param string $path + */ + protected function collectInvocation($path) + { + if (isset($this->invocation)) { + return; + } + + $manager = Manager::instance(); + $this->invocation = $manager->resolve($path); + if ($this->invocation === null) { + throw new Exception( + 'Expected invocation could not be resolved', + 1556389591 + ); + } + // confirm, previous interceptor(s) validated invocation + $this->invocation->confirm(); + $collection = $manager->getCollection(); + if (!$collection->has($this->invocation)) { + $collection->collect($this->invocation); + } + } + + /** + * @return Manager|Assertable + * @deprecated Use Manager::instance() directly */ protected function resolveAssertable() { diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Resolvable.php b/www7/misc/typo3/phar-stream-wrapper/src/Resolvable.php new file mode 100644 index 000000000..5d5fdc63e --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Resolvable.php @@ -0,0 +1,24 @@ +baseName = $baseName; + $this->alias = $alias; + } + + /** + * @return string + */ + public function __toString() + { + return $this->baseName; + } + + /** + * @return string + */ + public function getBaseName() + { + return $this->baseName; + } + + /** + * @return null|string + */ + public function getAlias() + { + return $this->alias; + } + + /** + * @return bool + */ + public function isConfirmed() + { + return $this->confirmed; + } + + public function confirm() + { + $this->confirmed = true; + } + + /** + * @param string $name + * @return mixed|null + */ + public function getVariable($name) + { + if (!isset($this->variables[$name])) { + return null; + } + return $this->variables[$name]; + } + + /** + * @param string $name + * @param mixed $value + */ + public function setVariable($name, $value) + { + $this->variables[$name] = $value; + } + + /** + * @param PharInvocation $other + * @return bool + */ + public function equals(PharInvocation $other) + { + return $other->baseName === $this->baseName + && $other->alias === $this->alias; + } +} \ No newline at end of file diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php b/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php new file mode 100644 index 000000000..e445ff66e --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php @@ -0,0 +1,156 @@ +invocations, true); + } + + /** + * @param PharInvocation $invocation + * @param null|int $flags + * @return bool + */ + public function collect(PharInvocation $invocation, $flags = null) + { + if ($flags === null) { + $flags = static::UNIQUE_INVOCATION | static::DUPLICATE_ALIAS_WARNING; + } + if ($invocation->getBaseName() === '' + || $invocation->getAlias() === '' + || !$this->assertUniqueBaseName($invocation, $flags) + || !$this->assertUniqueInvocation($invocation, $flags) + ) { + return false; + } + if ($flags & static::DUPLICATE_ALIAS_WARNING) { + $this->triggerDuplicateAliasWarning($invocation); + } + + $this->invocations[] = $invocation; + return true; + } + + /** + * @param callable $callback + * @param bool $reverse + * @return null|PharInvocation + */ + public function findByCallback($callback, $reverse = false) + { + foreach ($this->getInvocations($reverse) as $invocation) { + if (call_user_func($callback, $invocation) === true) { + return $invocation; + } + } + return null; + } + + /** + * Asserts that base-name is unique. This disallows having multiple invocations for + * same base-name but having different alias names. + * + * @param PharInvocation $invocation + * @param int $flags + * @return bool + */ + private function assertUniqueBaseName(PharInvocation $invocation, $flags) + { + if (!($flags & static::UNIQUE_BASE_NAME)) { + return true; + } + return $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->getBaseName() === $invocation->getBaseName(); + } + ) === null; + } + + /** + * Asserts that combination of base-name and alias is unique. This allows having multiple + * invocations for same base-name but having different alias names (for whatever reason). + * + * @param PharInvocation $invocation + * @param int $flags + * @return bool + */ + private function assertUniqueInvocation(PharInvocation $invocation, $flags) + { + if (!($flags & static::UNIQUE_INVOCATION)) { + return true; + } + return $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->equals($invocation); + } + ) === null; + } + + /** + * Triggers warning for invocations with same alias and same confirmation state. + * + * @param PharInvocation $invocation + * @see \TYPO3\PharStreamWrapper\PharStreamWrapper::collectInvocation() + */ + private function triggerDuplicateAliasWarning(PharInvocation $invocation) + { + $sameAliasInvocation = $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->isConfirmed() === $invocation->isConfirmed() + && $candidate->getAlias() === $invocation->getAlias(); + }, + true + ); + if ($sameAliasInvocation === null) { + return; + } + trigger_error( + sprintf( + 'Alias %s cannot be used by %s, already used by %s', + $invocation->getAlias(), + $invocation->getBaseName(), + $sameAliasInvocation->getBaseName() + ), + E_USER_WARNING + ); + } + + /** + * @param bool $reverse + * @return PharInvocation[] + */ + private function getInvocations($reverse = false) + { + if ($reverse) { + return array_reverse($this->invocations); + } + return $this->invocations; + } +} \ No newline at end of file diff --git a/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php b/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php new file mode 100644 index 000000000..80b86d3db --- /dev/null +++ b/www7/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php @@ -0,0 +1,241 @@ +findByAlias($path); + if ($invocation !== null) { + return $invocation; + } + } + + $baseName = $this->resolveBaseName($path, $flags); + if ($baseName === null) { + return null; + } + + if ($flags & static::RESOLVE_REALPATH) { + $baseName = $this->baseNames[$baseName]; + } + + return $this->retrieveInvocation($baseName, $flags); + } + + /** + * Retrieves PharInvocation, either existing in collection or created on demand + * with resolving a potential alias name used in the according Phar archive. + * + * @param string $baseName + * @param int $flags + * @return PharInvocation + */ + private function retrieveInvocation($baseName, $flags) + { + $invocation = $this->findByBaseName($baseName); + if ($invocation !== null) { + return $invocation; + } + + if ($flags & static::RESOLVE_ALIAS) { + $reader = new Reader($baseName); + $alias = $reader->resolveContainer()->getAlias(); + } else { + $alias = ''; + } + // add unconfirmed(!) new invocation to collection + $invocation = new PharInvocation($baseName, $alias); + Manager::instance()->getCollection()->collect($invocation); + return $invocation; + } + + /** + * @param string $path + * @param int $flags + * @return null|string + */ + private function resolveBaseName($path, $flags) + { + $baseName = $this->findInBaseNames($path); + if ($baseName !== null) { + return $baseName; + } + + $baseName = Helper::determineBaseFile($path); + if ($baseName !== null) { + $this->addBaseName($baseName); + return $baseName; + } + + $possibleAlias = $this->resolvePossibleAlias($path); + if (!($flags & static::RESOLVE_ALIAS) || $possibleAlias === null) { + return null; + } + + $trace = debug_backtrace(); + foreach ($trace as $item) { + if (!isset($item['function']) || !isset($item['args'][0]) + || !in_array($item['function'], $this->invocationFunctionNames, true)) { + continue; + } + $currentPath = $item['args'][0]; + if (Helper::hasPharPrefix($currentPath)) { + continue; + } + $currentBaseName = Helper::determineBaseFile($currentPath); + if ($currentBaseName === null) { + continue; + } + // ensure the possible alias name (how we have been called initially) matches + // the resolved alias name that was retrieved by the current possible base name + $reader = new Reader($currentBaseName); + $currentAlias = $reader->resolveContainer()->getAlias(); + if ($currentAlias !== $possibleAlias) { + continue; + } + $this->addBaseName($currentBaseName); + return $currentBaseName; + } + + return null; + } + + /** + * @param string $path + * @return null|string + */ + private function resolvePossibleAlias($path) + { + $normalizedPath = Helper::normalizePath($path); + return strstr($normalizedPath, '/', true) ?: null; + } + + /** + * @param string $baseName + * @return null|PharInvocation + */ + private function findByBaseName($baseName) + { + return Manager::instance()->getCollection()->findByCallback( + function (PharInvocation $candidate) use ($baseName) { + return $candidate->getBaseName() === $baseName; + }, + true + ); + } + + /** + * @param string $path + * @return null|string + */ + private function findInBaseNames($path) + { + // return directly if the resolved base name was submitted + if (in_array($path, $this->baseNames, true)) { + return $path; + } + + $parts = explode('/', Helper::normalizePath($path)); + + while (count($parts)) { + $currentPath = implode('/', $parts); + if (isset($this->baseNames[$currentPath])) { + return $currentPath; + } + array_pop($parts); + } + + return null; + } + + /** + * @param string $baseName + */ + private function addBaseName($baseName) + { + if (isset($this->baseNames[$baseName])) { + return; + } + $this->baseNames[$baseName] = realpath($baseName); + } + + /** + * Finds confirmed(!) invocations by alias. + * + * @param string $path + * @return null|PharInvocation + * @see \TYPO3\PharStreamWrapper\PharStreamWrapper::collectInvocation() + */ + private function findByAlias($path) + { + $possibleAlias = $this->resolvePossibleAlias($path); + if ($possibleAlias === null) { + return null; + } + return Manager::instance()->getCollection()->findByCallback( + function (PharInvocation $candidate) use ($possibleAlias) { + return $candidate->isConfirmed() && $candidate->getAlias() === $possibleAlias; + }, + true + ); + } +} diff --git a/www7/modules/aggregator/aggregator.info b/www7/modules/aggregator/aggregator.info index a5532dc2f..d96edbdbf 100644 --- a/www7/modules/aggregator/aggregator.info +++ b/www7/modules/aggregator/aggregator.info @@ -7,7 +7,7 @@ files[] = aggregator.test configure = admin/config/services/aggregator/settings stylesheets[all][] = aggregator.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/aggregator/tests/aggregator_test.info b/www7/modules/aggregator/tests/aggregator_test.info index 90a8b2f63..e0253ce91 100644 --- a/www7/modules/aggregator/tests/aggregator_test.info +++ b/www7/modules/aggregator/tests/aggregator_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/block/block.info b/www7/modules/block/block.info index c9c4171ec..8fccc4881 100644 --- a/www7/modules/block/block.info +++ b/www7/modules/block/block.info @@ -6,7 +6,7 @@ core = 7.x files[] = block.test configure = admin/structure/block -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/block/tests/block_test.info b/www7/modules/block/tests/block_test.info index beb9141a0..dbd486261 100644 --- a/www7/modules/block/tests/block_test.info +++ b/www7/modules/block/tests/block_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/block/tests/themes/block_test_theme/block_test_theme.info b/www7/modules/block/tests/themes/block_test_theme/block_test_theme.info index 89305fc0e..9fe95fa66 100644 --- a/www7/modules/block/tests/themes/block_test_theme/block_test_theme.info +++ b/www7/modules/block/tests/themes/block_test_theme/block_test_theme.info @@ -13,7 +13,7 @@ regions[footer] = Footer regions[highlighted] = Highlighted regions[help] = Help -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/blog/blog.info b/www7/modules/blog/blog.info index 041aadcfe..aade48494 100644 --- a/www7/modules/blog/blog.info +++ b/www7/modules/blog/blog.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = blog.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/book/book.info b/www7/modules/book/book.info index a3c5af7eb..95054e461 100644 --- a/www7/modules/book/book.info +++ b/www7/modules/book/book.info @@ -7,7 +7,7 @@ files[] = book.test configure = admin/content/book/settings stylesheets[all][] = book.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/color/color.info b/www7/modules/color/color.info index 2f986d902..764e24944 100644 --- a/www7/modules/color/color.info +++ b/www7/modules/color/color.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = color.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/comment/comment.info b/www7/modules/comment/comment.info index 7970128c7..8cf5f1673 100644 --- a/www7/modules/comment/comment.info +++ b/www7/modules/comment/comment.info @@ -9,7 +9,7 @@ files[] = comment.test configure = admin/content/comment stylesheets[all][] = comment.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/contact/contact.info b/www7/modules/contact/contact.info index 663818e1e..b7c403c8c 100644 --- a/www7/modules/contact/contact.info +++ b/www7/modules/contact/contact.info @@ -6,7 +6,7 @@ core = 7.x files[] = contact.test configure = admin/structure/contact -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/contextual/contextual.info b/www7/modules/contextual/contextual.info index d23cc9a81..17a83bd3e 100644 --- a/www7/modules/contextual/contextual.info +++ b/www7/modules/contextual/contextual.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = contextual.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/dashboard/dashboard.info b/www7/modules/dashboard/dashboard.info index d3ca72162..4fc749d3c 100644 --- a/www7/modules/dashboard/dashboard.info +++ b/www7/modules/dashboard/dashboard.info @@ -7,7 +7,7 @@ files[] = dashboard.test dependencies[] = block configure = admin/dashboard/customize -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/dblog/dblog.info b/www7/modules/dblog/dblog.info index 26e173710..cbc892687 100644 --- a/www7/modules/dblog/dblog.info +++ b/www7/modules/dblog/dblog.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = dblog.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/field.info b/www7/modules/field/field.info index 2228c0591..5a60e62ae 100644 --- a/www7/modules/field/field.info +++ b/www7/modules/field/field.info @@ -11,7 +11,7 @@ dependencies[] = field_sql_storage required = TRUE stylesheets[all][] = theme/field.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/field_sql_storage/field_sql_storage.info b/www7/modules/field/modules/field_sql_storage/field_sql_storage.info index e43fe820f..ecf448ea6 100644 --- a/www7/modules/field/modules/field_sql_storage/field_sql_storage.info +++ b/www7/modules/field/modules/field_sql_storage/field_sql_storage.info @@ -7,7 +7,7 @@ dependencies[] = field files[] = field_sql_storage.test required = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/list/list.info b/www7/modules/field/modules/list/list.info index 851292eb0..433bb72f8 100644 --- a/www7/modules/field/modules/list/list.info +++ b/www7/modules/field/modules/list/list.info @@ -7,7 +7,7 @@ dependencies[] = field dependencies[] = options files[] = tests/list.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/list/tests/list_test.info b/www7/modules/field/modules/list/tests/list_test.info index 9a8e792ec..f1a251179 100644 --- a/www7/modules/field/modules/list/tests/list_test.info +++ b/www7/modules/field/modules/list/tests/list_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/number/number.info b/www7/modules/field/modules/number/number.info index a7853d595..18b595b1a 100644 --- a/www7/modules/field/modules/number/number.info +++ b/www7/modules/field/modules/number/number.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = field files[] = number.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/number/number.test b/www7/modules/field/modules/number/number.test index 839da36c3..db225855b 100644 --- a/www7/modules/field/modules/number/number.test +++ b/www7/modules/field/modules/number/number.test @@ -69,7 +69,7 @@ class NumberFieldTestCase extends DrupalWebTestCase { preg_match('|test-entity/manage/(\d+)/edit|', $this->url, $match); $id = $match[1]; $this->assertRaw(t('test_entity @id has been created.', array('@id' => $id)), 'Entity was created'); - $this->assertRaw(round($value, 2), 'Value is displayed.'); + $this->assertRaw($value, 'Value is displayed.'); // Try to create entries with more than one decimal separator; assert fail. $wrong_entries = array( diff --git a/www7/modules/field/modules/options/options.info b/www7/modules/field/modules/options/options.info index 77b1359f8..b55064304 100644 --- a/www7/modules/field/modules/options/options.info +++ b/www7/modules/field/modules/options/options.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = field files[] = options.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/modules/text/text.info b/www7/modules/field/modules/text/text.info index 39881eb18..1627800bc 100644 --- a/www7/modules/field/modules/text/text.info +++ b/www7/modules/field/modules/text/text.info @@ -7,7 +7,7 @@ dependencies[] = field files[] = text.test required = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field/tests/field_test.info b/www7/modules/field/tests/field_test.info index e0f42e987..a74f7b1d3 100644 --- a/www7/modules/field/tests/field_test.info +++ b/www7/modules/field/tests/field_test.info @@ -6,7 +6,7 @@ files[] = field_test.entity.inc version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/field_ui/field_ui.info b/www7/modules/field_ui/field_ui.info index d7564f5a4..b44f1c96a 100644 --- a/www7/modules/field_ui/field_ui.info +++ b/www7/modules/field_ui/field_ui.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = field files[] = field_ui.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/file/file.field.inc b/www7/modules/file/file.field.inc index d592381bd..fc1a1df20 100644 --- a/www7/modules/file/file.field.inc +++ b/www7/modules/file/file.field.inc @@ -599,7 +599,7 @@ function file_field_widget_value($element, $input = FALSE, $form_state) { // If the display field is present make sure its unchecked value is saved. $field = field_widget_field($element, $form_state); if (empty($input['display'])) { - $input['display'] = $field['settings']['display_field'] ? 0 : 1; + $input['display'] = !empty($field['settings']['display_field']) ? 0 : 1; } } diff --git a/www7/modules/file/file.info b/www7/modules/file/file.info index f2d0872fd..220bae2ae 100644 --- a/www7/modules/file/file.info +++ b/www7/modules/file/file.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = field files[] = tests/file.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/file/tests/file.test b/www7/modules/file/tests/file.test index f764a9033..849451a55 100644 --- a/www7/modules/file/tests/file.test +++ b/www7/modules/file/tests/file.test @@ -1875,3 +1875,60 @@ class FileFieldAnonymousSubmission extends FileFieldTestCase { } } + +/** + * Tests the file_scan_directory() function. + */ +class FileScanDirectory extends FileFieldTestCase { + + /** + * @var string + */ + protected $path; + + /** + * {@inheritdoc} + */ + public static function getInfo() { + return array( + 'name' => 'File ScanDirectory', + 'description' => 'Tests the file_scan_directory() function.', + 'group' => 'File', + ); + } + + /** + * {@inheritdoc} + */ + function setUp() { + parent::setUp(); + + $this->path = 'modules/file/tests/fixtures/file_scan_ignore'; + } + + /** + * Tests file_scan_directory() obeys 'file_scan_ignore_directories' setting. + * If nomask is not passed as argument, it should use the default settings. + * If nomask is passed as argument, it should obey this rule. + */ + public function testNoMask() { + $files = file_scan_directory($this->path, '/\.txt$/'); + $this->assertEqual(3, count($files), '3 text files found when not ignoring directories.'); + + global $conf; + $conf['file_scan_ignore_directories'] = array('frontend_framework'); + + $files = file_scan_directory($this->path, '/\.txt$/'); + $this->assertEqual(1, count($files), '1 text files found when ignoring directories called "frontend_framework".'); + + // Make that directories specified by default still work when a new nomask is provided. + $files = file_scan_directory($this->path, '/\.txt$/', array('nomask' => '/^c.txt/')); + $this->assertEqual(2, count($files), '2 text files found when an "nomask" option is passed in.'); + + // Ensure that the directories in file_scan_ignore_directories are escaped using preg_quote. + $conf['file_scan_ignore_directories'] = array('frontend.*'); + $files = file_scan_directory($this->path, '/\.txt$/'); + $this->assertEqual(3, count($files), '2 text files found when ignoring a directory that is not there.'); + } + +} diff --git a/www7/modules/file/tests/file_module_test.info b/www7/modules/file/tests/file_module_test.info index a8b4acc9d..5bad5c83d 100644 --- a/www7/modules/file/tests/file_module_test.info +++ b/www7/modules/file/tests/file_module_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/file/tests/fixtures/file_scan_ignore/a.txt b/www7/modules/file/tests/fixtures/file_scan_ignore/a.txt new file mode 100644 index 000000000..e69de29bb diff --git a/www7/modules/file/tests/fixtures/file_scan_ignore/frontend_framework/b.txt b/www7/modules/file/tests/fixtures/file_scan_ignore/frontend_framework/b.txt new file mode 100644 index 000000000..e69de29bb diff --git a/www7/modules/file/tests/fixtures/file_scan_ignore/frontend_framework/c.txt b/www7/modules/file/tests/fixtures/file_scan_ignore/frontend_framework/c.txt new file mode 100644 index 000000000..e69de29bb diff --git a/www7/modules/filter/filter.info b/www7/modules/filter/filter.info index f16777f81..3133b03a9 100644 --- a/www7/modules/filter/filter.info +++ b/www7/modules/filter/filter.info @@ -7,7 +7,7 @@ files[] = filter.test required = TRUE configure = admin/config/content/formats -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/forum/forum.info b/www7/modules/forum/forum.info index 758f35b23..d389c244a 100644 --- a/www7/modules/forum/forum.info +++ b/www7/modules/forum/forum.info @@ -9,7 +9,7 @@ files[] = forum.test configure = admin/structure/forum stylesheets[all][] = forum.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/help/help.info b/www7/modules/help/help.info index 46ee825cd..18f1cd342 100644 --- a/www7/modules/help/help.info +++ b/www7/modules/help/help.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = help.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/image/image.info b/www7/modules/image/image.info index 7903f2c25..b2940584d 100644 --- a/www7/modules/image/image.info +++ b/www7/modules/image/image.info @@ -7,7 +7,7 @@ dependencies[] = file files[] = image.test configure = admin/config/media/image-styles -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/image/tests/image_module_test.info b/www7/modules/image/tests/image_module_test.info index 124b6996b..57d065efb 100644 --- a/www7/modules/image/tests/image_module_test.info +++ b/www7/modules/image/tests/image_module_test.info @@ -6,7 +6,7 @@ core = 7.x files[] = image_module_test.module hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/locale/locale.info b/www7/modules/locale/locale.info index fb257d1aa..f295d8890 100644 --- a/www7/modules/locale/locale.info +++ b/www7/modules/locale/locale.info @@ -6,7 +6,7 @@ core = 7.x files[] = locale.test configure = admin/config/regional/language -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/locale/tests/locale_test.info b/www7/modules/locale/tests/locale_test.info index 5727160f2..15f49ec88 100644 --- a/www7/modules/locale/tests/locale_test.info +++ b/www7/modules/locale/tests/locale_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/menu/menu.info b/www7/modules/menu/menu.info index 52b127b6f..b24f2966c 100644 --- a/www7/modules/menu/menu.info +++ b/www7/modules/menu/menu.info @@ -6,7 +6,7 @@ core = 7.x files[] = menu.test configure = admin/structure/menu -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/node/node.info b/www7/modules/node/node.info index 91e552477..e802aa682 100644 --- a/www7/modules/node/node.info +++ b/www7/modules/node/node.info @@ -9,7 +9,7 @@ required = TRUE configure = admin/structure/types stylesheets[all][] = node.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/node/tests/node_access_test.info b/www7/modules/node/tests/node_access_test.info index b4c70c84c..c78209ad4 100644 --- a/www7/modules/node/tests/node_access_test.info +++ b/www7/modules/node/tests/node_access_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/node/tests/node_test.info b/www7/modules/node/tests/node_test.info index 162dca0e4..c12a8c154 100644 --- a/www7/modules/node/tests/node_test.info +++ b/www7/modules/node/tests/node_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/node/tests/node_test_exception.info b/www7/modules/node/tests/node_test_exception.info index 80032910e..a23c4c7ca 100644 --- a/www7/modules/node/tests/node_test_exception.info +++ b/www7/modules/node/tests/node_test_exception.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/openid/openid.info b/www7/modules/openid/openid.info index c6b932514..5e630f9cc 100644 --- a/www7/modules/openid/openid.info +++ b/www7/modules/openid/openid.info @@ -5,7 +5,7 @@ package = Core core = 7.x files[] = openid.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/openid/tests/openid_test.info b/www7/modules/openid/tests/openid_test.info index 5f06fc28e..f7ea5dca3 100644 --- a/www7/modules/openid/tests/openid_test.info +++ b/www7/modules/openid/tests/openid_test.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = openid hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/overlay/overlay.info b/www7/modules/overlay/overlay.info index d8f9cf62f..00a167bc5 100644 --- a/www7/modules/overlay/overlay.info +++ b/www7/modules/overlay/overlay.info @@ -4,7 +4,7 @@ package = Core version = VERSION core = 7.x -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/path/path.info b/www7/modules/path/path.info index 1878b27df..40fb7ea35 100644 --- a/www7/modules/path/path.info +++ b/www7/modules/path/path.info @@ -6,7 +6,7 @@ core = 7.x files[] = path.test configure = admin/config/search/path -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/php/php.info b/www7/modules/php/php.info index 8f64cf09a..256116e9b 100644 --- a/www7/modules/php/php.info +++ b/www7/modules/php/php.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = php.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/poll/poll.info b/www7/modules/poll/poll.info index 630ba42a1..7224eadcb 100644 --- a/www7/modules/poll/poll.info +++ b/www7/modules/poll/poll.info @@ -6,7 +6,7 @@ core = 7.x files[] = poll.test stylesheets[all][] = poll.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/profile/profile.info b/www7/modules/profile/profile.info index 7d1e79147..907b1b0a8 100644 --- a/www7/modules/profile/profile.info +++ b/www7/modules/profile/profile.info @@ -11,7 +11,7 @@ configure = admin/config/people/profile ; See user_system_info_alter(). hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/rdf/rdf.info b/www7/modules/rdf/rdf.info index ee1d9c828..5ae8c6569 100644 --- a/www7/modules/rdf/rdf.info +++ b/www7/modules/rdf/rdf.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x files[] = rdf.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/rdf/tests/rdf_test.info b/www7/modules/rdf/tests/rdf_test.info index 063514f73..c95e12da9 100644 --- a/www7/modules/rdf/tests/rdf_test.info +++ b/www7/modules/rdf/tests/rdf_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE dependencies[] = blog -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/search/search.info b/www7/modules/search/search.info index 4806cb8f3..5478e5b96 100644 --- a/www7/modules/search/search.info +++ b/www7/modules/search/search.info @@ -8,7 +8,7 @@ files[] = search.test configure = admin/config/search/settings stylesheets[all][] = search.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/search/tests/search_embedded_form.info b/www7/modules/search/tests/search_embedded_form.info index a16393ff2..bc8e49cd5 100644 --- a/www7/modules/search/tests/search_embedded_form.info +++ b/www7/modules/search/tests/search_embedded_form.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/search/tests/search_extra_type.info b/www7/modules/search/tests/search_extra_type.info index 85d76cc17..85e45dfb5 100644 --- a/www7/modules/search/tests/search_extra_type.info +++ b/www7/modules/search/tests/search_extra_type.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/search/tests/search_node_tags.info b/www7/modules/search/tests/search_node_tags.info index 5f0f84d6c..a62e6f1cf 100644 --- a/www7/modules/search/tests/search_node_tags.info +++ b/www7/modules/search/tests/search_node_tags.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/shortcut/shortcut.info b/www7/modules/shortcut/shortcut.info index a8bcc2681..69c95d1b1 100644 --- a/www7/modules/shortcut/shortcut.info +++ b/www7/modules/shortcut/shortcut.info @@ -6,7 +6,7 @@ core = 7.x files[] = shortcut.test configure = admin/config/user-interface/shortcut -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/drupal_web_test_case.php b/www7/modules/simpletest/drupal_web_test_case.php index 3124ffe82..a0872c234 100644 --- a/www7/modules/simpletest/drupal_web_test_case.php +++ b/www7/modules/simpletest/drupal_web_test_case.php @@ -3012,7 +3012,7 @@ protected function assertRaw($raw, $message = '', $group = 'Other') { if (!$message) { $message = t('Raw "@raw" found', array('@raw' => $raw)); } - return $this->assert(strpos($this->drupalGetContent(), $raw) !== FALSE, $message, $group); + return $this->assert(strpos($this->drupalGetContent(), (string) $raw) !== FALSE, $message, $group); } /** @@ -3032,7 +3032,7 @@ protected function assertNoRaw($raw, $message = '', $group = 'Other') { if (!$message) { $message = t('Raw "@raw" not found', array('@raw' => $raw)); } - return $this->assert(strpos($this->drupalGetContent(), $raw) === FALSE, $message, $group); + return $this->assert(strpos($this->drupalGetContent(), (string) $raw) === FALSE, $message, $group); } /** diff --git a/www7/modules/simpletest/simpletest.info b/www7/modules/simpletest/simpletest.info index 7190c6764..783ace447 100644 --- a/www7/modules/simpletest/simpletest.info +++ b/www7/modules/simpletest/simpletest.info @@ -57,7 +57,7 @@ files[] = tests/upgrade/update.trigger.test files[] = tests/upgrade/update.field.test files[] = tests/upgrade/update.user.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/actions_loop_test.info b/www7/modules/simpletest/tests/actions_loop_test.info index a7939735b..25db0c71a 100644 --- a/www7/modules/simpletest/tests/actions_loop_test.info +++ b/www7/modules/simpletest/tests/actions_loop_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/ajax_forms_test.info b/www7/modules/simpletest/tests/ajax_forms_test.info index d802f30c3..56e2f1a91 100644 --- a/www7/modules/simpletest/tests/ajax_forms_test.info +++ b/www7/modules/simpletest/tests/ajax_forms_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/ajax_test.info b/www7/modules/simpletest/tests/ajax_test.info index 6ecc1ca0f..39cf716d9 100644 --- a/www7/modules/simpletest/tests/ajax_test.info +++ b/www7/modules/simpletest/tests/ajax_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/batch_test.info b/www7/modules/simpletest/tests/batch_test.info index 579ca641a..ef335ad42 100644 --- a/www7/modules/simpletest/tests/batch_test.info +++ b/www7/modules/simpletest/tests/batch_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/boot_test_1.info b/www7/modules/simpletest/tests/boot_test_1.info index b46d19f6b..139fe8f09 100644 --- a/www7/modules/simpletest/tests/boot_test_1.info +++ b/www7/modules/simpletest/tests/boot_test_1.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/boot_test_2.info b/www7/modules/simpletest/tests/boot_test_2.info index c2d6f8ced..7e38cc274 100644 --- a/www7/modules/simpletest/tests/boot_test_2.info +++ b/www7/modules/simpletest/tests/boot_test_2.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/bootstrap.test b/www7/modules/simpletest/tests/bootstrap.test index 16ac1714f..effd04bf2 100644 --- a/www7/modules/simpletest/tests/bootstrap.test +++ b/www7/modules/simpletest/tests/bootstrap.test @@ -729,16 +729,12 @@ class BootstrapMiscTestCase extends DrupalUnitTestCase { * Tests that the drupal_check_memory_limit() function works as expected. */ function testCheckMemoryLimit() { - $memory_limit = ini_get('memory_limit'); // Test that a very reasonable amount of memory is available. $this->assertTrue(drupal_check_memory_limit('30MB'), '30MB of memory tested available.'); - // Get the available memory and multiply it by two to make it unreasonably - // high. - $twice_avail_memory = ($memory_limit * 2) . 'MB'; - + // Test an unlimited memory limit. // The function should always return true if the memory limit is set to -1. - $this->assertTrue(drupal_check_memory_limit($twice_avail_memory, -1), 'drupal_check_memory_limit() returns TRUE when a limit of -1 (none) is supplied'); + $this->assertTrue(drupal_check_memory_limit('9999999999YB', -1), 'drupal_check_memory_limit() returns TRUE when a limit of -1 (none) is supplied'); // Test that even though we have 30MB of memory available - the function // returns FALSE when given an upper limit for how much memory can be used. diff --git a/www7/modules/simpletest/tests/common_test.info b/www7/modules/simpletest/tests/common_test.info index 21e565d01..79f8badde 100644 --- a/www7/modules/simpletest/tests/common_test.info +++ b/www7/modules/simpletest/tests/common_test.info @@ -7,7 +7,7 @@ stylesheets[all][] = common_test.css stylesheets[print][] = common_test.print.css hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/common_test_cron_helper.info b/www7/modules/simpletest/tests/common_test_cron_helper.info index cfe45113e..cf545fa05 100644 --- a/www7/modules/simpletest/tests/common_test_cron_helper.info +++ b/www7/modules/simpletest/tests/common_test_cron_helper.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/database_test.info b/www7/modules/simpletest/tests/database_test.info index a88282371..2862e6a60 100644 --- a/www7/modules/simpletest/tests/database_test.info +++ b/www7/modules/simpletest/tests/database_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info b/www7/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info index 766405496..da7721609 100644 --- a/www7/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info +++ b/www7/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info @@ -7,7 +7,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/www7/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info index d1f3545e4..a5697a704 100644 --- a/www7/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +++ b/www7/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/www7/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info index 061a14376..4897bbd2f 100644 --- a/www7/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +++ b/www7/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/entity_cache_test.info b/www7/modules/simpletest/tests/entity_cache_test.info index 7f52e24b6..3f7211a6a 100644 --- a/www7/modules/simpletest/tests/entity_cache_test.info +++ b/www7/modules/simpletest/tests/entity_cache_test.info @@ -6,7 +6,7 @@ core = 7.x dependencies[] = entity_cache_test_dependency hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/entity_cache_test_dependency.info b/www7/modules/simpletest/tests/entity_cache_test_dependency.info index 5dc9a367d..8710673f0 100644 --- a/www7/modules/simpletest/tests/entity_cache_test_dependency.info +++ b/www7/modules/simpletest/tests/entity_cache_test_dependency.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/entity_crud_hook_test.info b/www7/modules/simpletest/tests/entity_crud_hook_test.info index edc4d5ca4..f2a6b50f8 100644 --- a/www7/modules/simpletest/tests/entity_crud_hook_test.info +++ b/www7/modules/simpletest/tests/entity_crud_hook_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/entity_query_access_test.info b/www7/modules/simpletest/tests/entity_query_access_test.info index 21d13156f..dd1fd0f0e 100644 --- a/www7/modules/simpletest/tests/entity_query_access_test.info +++ b/www7/modules/simpletest/tests/entity_query_access_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/error_test.info b/www7/modules/simpletest/tests/error_test.info index c7fe885ee..40048ccbe 100644 --- a/www7/modules/simpletest/tests/error_test.info +++ b/www7/modules/simpletest/tests/error_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/file.test b/www7/modules/simpletest/tests/file.test index 55dd1906e..032f2cbac 100644 --- a/www7/modules/simpletest/tests/file.test +++ b/www7/modules/simpletest/tests/file.test @@ -957,6 +957,15 @@ class FileDirectoryTest extends FileTestCase { $path = file_create_filename($basename, $directory); $this->assertEqual($path, $expected, format_string('Creating a new filepath from %original equals %new.', array('%new' => $path, '%original' => $original)), 'File'); + try { + $filename = "a\xFFtest\x80€.txt"; + file_create_filename($filename, $directory); + $this->fail('Expected exception not thrown'); + } + catch (RuntimeException $e) { + $this->assertEqual("Invalid filename '$filename'", $e->getMessage()); + } + // @TODO: Finally we copy a file into a directory several times, to ensure a properly iterating filename suffix. } @@ -989,6 +998,14 @@ class FileDirectoryTest extends FileTestCase { $this->assertNotEqual($path, $destination, 'A new filepath destination is created when filepath destination already exists with FILE_EXISTS_RENAME.', 'File'); $path = file_destination($destination, FILE_EXISTS_ERROR); $this->assertEqual($path, FALSE, 'An error is returned when filepath destination already exists with FILE_EXISTS_ERROR.', 'File'); + + try { + file_destination("core/misc/a\xFFtest\x80€.txt", FILE_EXISTS_REPLACE); + $this->fail('Expected exception not thrown'); + } + catch (RuntimeException $e) { + $this->assertEqual("Invalid filename 'a\xFFtest\x80€.txt'", $e->getMessage()); + } } /** diff --git a/www7/modules/simpletest/tests/file_test.info b/www7/modules/simpletest/tests/file_test.info index d73960ce7..849fcb316 100644 --- a/www7/modules/simpletest/tests/file_test.info +++ b/www7/modules/simpletest/tests/file_test.info @@ -6,7 +6,7 @@ core = 7.x files[] = file_test.module hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/filter_test.info b/www7/modules/simpletest/tests/filter_test.info index 6433ddd3a..3b847858b 100644 --- a/www7/modules/simpletest/tests/filter_test.info +++ b/www7/modules/simpletest/tests/filter_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/form_test.info b/www7/modules/simpletest/tests/form_test.info index a2657115f..350ce2595 100644 --- a/www7/modules/simpletest/tests/form_test.info +++ b/www7/modules/simpletest/tests/form_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/image_test.info b/www7/modules/simpletest/tests/image_test.info index cc14c8f94..5724949e5 100644 --- a/www7/modules/simpletest/tests/image_test.info +++ b/www7/modules/simpletest/tests/image_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/menu_test.info b/www7/modules/simpletest/tests/menu_test.info index c61864d13..717c52580 100644 --- a/www7/modules/simpletest/tests/menu_test.info +++ b/www7/modules/simpletest/tests/menu_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/module_test.info b/www7/modules/simpletest/tests/module_test.info index bdf17ea1c..c985a0412 100644 --- a/www7/modules/simpletest/tests/module_test.info +++ b/www7/modules/simpletest/tests/module_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/path_test.info b/www7/modules/simpletest/tests/path_test.info index 4f177d4de..259063967 100644 --- a/www7/modules/simpletest/tests/path_test.info +++ b/www7/modules/simpletest/tests/path_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/psr_0_test/psr_0_test.info b/www7/modules/simpletest/tests/psr_0_test/psr_0_test.info index 3d01fab31..5d83fcb27 100644 --- a/www7/modules/simpletest/tests/psr_0_test/psr_0_test.info +++ b/www7/modules/simpletest/tests/psr_0_test/psr_0_test.info @@ -5,7 +5,7 @@ core = 7.x hidden = TRUE package = Testing -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/psr_4_test/psr_4_test.info b/www7/modules/simpletest/tests/psr_4_test/psr_4_test.info index 0619a2430..ac574e151 100644 --- a/www7/modules/simpletest/tests/psr_4_test/psr_4_test.info +++ b/www7/modules/simpletest/tests/psr_4_test/psr_4_test.info @@ -5,7 +5,7 @@ core = 7.x hidden = TRUE package = Testing -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/requirements1_test.info b/www7/modules/simpletest/tests/requirements1_test.info index 783326cf3..2901a6bad 100644 --- a/www7/modules/simpletest/tests/requirements1_test.info +++ b/www7/modules/simpletest/tests/requirements1_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/requirements2_test.info b/www7/modules/simpletest/tests/requirements2_test.info index 8312c3a24..8c03a0cc8 100644 --- a/www7/modules/simpletest/tests/requirements2_test.info +++ b/www7/modules/simpletest/tests/requirements2_test.info @@ -7,7 +7,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/session_test.info b/www7/modules/simpletest/tests/session_test.info index 8bf277cfc..37f353849 100644 --- a/www7/modules/simpletest/tests/session_test.info +++ b/www7/modules/simpletest/tests/session_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_dependencies_test.info b/www7/modules/simpletest/tests/system_dependencies_test.info index 2a82092ac..de4b98122 100644 --- a/www7/modules/simpletest/tests/system_dependencies_test.info +++ b/www7/modules/simpletest/tests/system_dependencies_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE dependencies[] = _missing_dependency -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info b/www7/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info index a385a05ac..e0bd91bd9 100644 --- a/www7/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info +++ b/www7/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE dependencies[] = system_incompatible_core_version_test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_incompatible_core_version_test.info b/www7/modules/simpletest/tests/system_incompatible_core_version_test.info index e12847471..6afe2e4fa 100644 --- a/www7/modules/simpletest/tests/system_incompatible_core_version_test.info +++ b/www7/modules/simpletest/tests/system_incompatible_core_version_test.info @@ -5,7 +5,7 @@ version = VERSION core = 5.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info b/www7/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info index 29bd5445c..a12a356cb 100644 --- a/www7/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info +++ b/www7/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info @@ -7,7 +7,7 @@ hidden = TRUE ; system_incompatible_module_version_test declares version 1.0 dependencies[] = system_incompatible_module_version_test (>2.0) -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_incompatible_module_version_test.info b/www7/modules/simpletest/tests/system_incompatible_module_version_test.info index 7383a2796..028183805 100644 --- a/www7/modules/simpletest/tests/system_incompatible_module_version_test.info +++ b/www7/modules/simpletest/tests/system_incompatible_module_version_test.info @@ -5,7 +5,7 @@ version = 1.0 core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_project_namespace_test.info b/www7/modules/simpletest/tests/system_project_namespace_test.info index 9bc711dc2..136c6b6ad 100644 --- a/www7/modules/simpletest/tests/system_project_namespace_test.info +++ b/www7/modules/simpletest/tests/system_project_namespace_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE dependencies[] = drupal:filter -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/system_test.info b/www7/modules/simpletest/tests/system_test.info index 5e78b89b4..b66b34b8f 100644 --- a/www7/modules/simpletest/tests/system_test.info +++ b/www7/modules/simpletest/tests/system_test.info @@ -6,7 +6,7 @@ core = 7.x files[] = system_test.module hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/taxonomy_test.info b/www7/modules/simpletest/tests/taxonomy_test.info index 59f714229..09893faa6 100644 --- a/www7/modules/simpletest/tests/taxonomy_test.info +++ b/www7/modules/simpletest/tests/taxonomy_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE dependencies[] = taxonomy -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/theme_test.info b/www7/modules/simpletest/tests/theme_test.info index c810edcb2..31faf08cd 100644 --- a/www7/modules/simpletest/tests/theme_test.info +++ b/www7/modules/simpletest/tests/theme_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info b/www7/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info index cab073b5a..e3cac6c30 100644 --- a/www7/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info +++ b/www7/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info @@ -6,7 +6,7 @@ hidden = TRUE settings[basetheme_only] = base theme value settings[subtheme_override] = base theme value -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info b/www7/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info index d80c5d0ff..6287d8ed5 100644 --- a/www7/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info +++ b/www7/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info @@ -6,7 +6,7 @@ hidden = TRUE settings[subtheme_override] = subtheme value -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/themes/test_theme/test_theme.info b/www7/modules/simpletest/tests/themes/test_theme/test_theme.info index a0e0dd68f..04324c809 100644 --- a/www7/modules/simpletest/tests/themes/test_theme/test_theme.info +++ b/www7/modules/simpletest/tests/themes/test_theme/test_theme.info @@ -17,7 +17,7 @@ stylesheets[all][] = system.base.css settings[theme_test_setting] = default value -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info b/www7/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info index 49513572f..2276ea896 100644 --- a/www7/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info +++ b/www7/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info @@ -4,7 +4,7 @@ core = 7.x hidden = TRUE engine = nyan_cat -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/update_script_test.info b/www7/modules/simpletest/tests/update_script_test.info index ea7b5065f..839b054e5 100644 --- a/www7/modules/simpletest/tests/update_script_test.info +++ b/www7/modules/simpletest/tests/update_script_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/update_test_1.info b/www7/modules/simpletest/tests/update_test_1.info index 3e3b36f65..5ed289208 100644 --- a/www7/modules/simpletest/tests/update_test_1.info +++ b/www7/modules/simpletest/tests/update_test_1.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/update_test_2.info b/www7/modules/simpletest/tests/update_test_2.info index 3e3b36f65..5ed289208 100644 --- a/www7/modules/simpletest/tests/update_test_2.info +++ b/www7/modules/simpletest/tests/update_test_2.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/update_test_3.info b/www7/modules/simpletest/tests/update_test_3.info index 3e3b36f65..5ed289208 100644 --- a/www7/modules/simpletest/tests/update_test_3.info +++ b/www7/modules/simpletest/tests/update_test_3.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/url_alter_test.info b/www7/modules/simpletest/tests/url_alter_test.info index 36d1ef401..0d55fbf0b 100644 --- a/www7/modules/simpletest/tests/url_alter_test.info +++ b/www7/modules/simpletest/tests/url_alter_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/simpletest/tests/xmlrpc_test.info b/www7/modules/simpletest/tests/xmlrpc_test.info index 2c6d90cc3..488bc50bd 100644 --- a/www7/modules/simpletest/tests/xmlrpc_test.info +++ b/www7/modules/simpletest/tests/xmlrpc_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/statistics/statistics.info b/www7/modules/statistics/statistics.info index 617ada790..f078b4143 100644 --- a/www7/modules/statistics/statistics.info +++ b/www7/modules/statistics/statistics.info @@ -6,7 +6,7 @@ core = 7.x files[] = statistics.test configure = admin/config/system/statistics -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/syslog/syslog.info b/www7/modules/syslog/syslog.info index 0814a3983..28197ac3e 100644 --- a/www7/modules/syslog/syslog.info +++ b/www7/modules/syslog/syslog.info @@ -6,7 +6,7 @@ core = 7.x files[] = syslog.test configure = admin/config/development/logging -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/system/system.info b/www7/modules/system/system.info index dfaf47fef..74c8fa4aa 100644 --- a/www7/modules/system/system.info +++ b/www7/modules/system/system.info @@ -12,7 +12,7 @@ files[] = system.test required = TRUE configure = admin/config/system -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/system/system.install b/www7/modules/system/system.install index d5e67435d..3bb07d955 100644 --- a/www7/modules/system/system.install +++ b/www7/modules/system/system.install @@ -2870,7 +2870,7 @@ function system_update_7061(&$sandbox) { if (!db_table_exists('system_update_7061')) { $table = array( 'description' => t('Stores temporary data for system_update_7061.'), - 'fields' => array('vid' => array('type' => 'int')), + 'fields' => array('vid' => array('type' => 'int', 'not null' => TRUE)), 'primary key' => array('vid'), ); db_create_table('system_update_7061', $table); @@ -3285,6 +3285,13 @@ function system_update_7081() { ->execute(); } +/** + * Add 'jquery-extend-3.4.0.js' to the 'jquery' library. + */ +function system_update_7082() { + // Empty update to force a rebuild of hook_library() and JS aggregates. +} + /** * @} End of "defgroup updates-7.x-extra". * The next series of updates should start at 8000. diff --git a/www7/modules/system/system.module b/www7/modules/system/system.module index 53844d878..4ce6b9b99 100644 --- a/www7/modules/system/system.module +++ b/www7/modules/system/system.module @@ -1182,6 +1182,9 @@ function system_library() { 'version' => '1.4.4', 'js' => array( 'misc/jquery.js' => array('group' => JS_LIBRARY, 'weight' => -20), + // This includes a security fix, so assign a weight that makes this load + // as soon after jquery.js is loaded as possible. + 'misc/jquery-extend-3.4.0.js' => array('group' => JS_LIBRARY, 'weight' => -19), ), ); diff --git a/www7/modules/system/tests/cron_queue_test.info b/www7/modules/system/tests/cron_queue_test.info index d574d64dc..f43ee03a8 100644 --- a/www7/modules/system/tests/cron_queue_test.info +++ b/www7/modules/system/tests/cron_queue_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/system/tests/system_cron_test.info b/www7/modules/system/tests/system_cron_test.info index d57b6043a..086825f49 100644 --- a/www7/modules/system/tests/system_cron_test.info +++ b/www7/modules/system/tests/system_cron_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/taxonomy/taxonomy.info b/www7/modules/taxonomy/taxonomy.info index 34e21b910..28a287ec8 100644 --- a/www7/modules/taxonomy/taxonomy.info +++ b/www7/modules/taxonomy/taxonomy.info @@ -8,7 +8,7 @@ files[] = taxonomy.module files[] = taxonomy.test configure = admin/structure/taxonomy -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/toolbar/toolbar.info b/www7/modules/toolbar/toolbar.info index 55f8c5cfc..0fb05069e 100644 --- a/www7/modules/toolbar/toolbar.info +++ b/www7/modules/toolbar/toolbar.info @@ -4,7 +4,7 @@ core = 7.x package = Core version = VERSION -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/tracker/tracker.info b/www7/modules/tracker/tracker.info index 098696228..867aa592b 100644 --- a/www7/modules/tracker/tracker.info +++ b/www7/modules/tracker/tracker.info @@ -6,7 +6,7 @@ version = VERSION core = 7.x files[] = tracker.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/translation/tests/translation_test.info b/www7/modules/translation/tests/translation_test.info index a4e0bd281..1efe113d9 100644 --- a/www7/modules/translation/tests/translation_test.info +++ b/www7/modules/translation/tests/translation_test.info @@ -5,7 +5,7 @@ package = Testing version = VERSION hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/translation/translation.info b/www7/modules/translation/translation.info index cab857c4b..7184e9909 100644 --- a/www7/modules/translation/translation.info +++ b/www7/modules/translation/translation.info @@ -6,7 +6,7 @@ version = VERSION core = 7.x files[] = translation.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/trigger/tests/trigger_test.info b/www7/modules/trigger/tests/trigger_test.info index b49b6e984..bf83fa084 100644 --- a/www7/modules/trigger/tests/trigger_test.info +++ b/www7/modules/trigger/tests/trigger_test.info @@ -4,7 +4,7 @@ package = Testing core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/trigger/trigger.info b/www7/modules/trigger/trigger.info index 4baee27e3..92e6fc83c 100644 --- a/www7/modules/trigger/trigger.info +++ b/www7/modules/trigger/trigger.info @@ -6,7 +6,7 @@ core = 7.x files[] = trigger.test configure = admin/structure/trigger -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/aaa_update_test.info b/www7/modules/update/tests/aaa_update_test.info index e39841306..3d8718ac9 100644 --- a/www7/modules/update/tests/aaa_update_test.info +++ b/www7/modules/update/tests/aaa_update_test.info @@ -4,7 +4,7 @@ package = Testing core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/bbb_update_test.info b/www7/modules/update/tests/bbb_update_test.info index bf0ea54bd..9916b5048 100644 --- a/www7/modules/update/tests/bbb_update_test.info +++ b/www7/modules/update/tests/bbb_update_test.info @@ -4,7 +4,7 @@ package = Testing core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/ccc_update_test.info b/www7/modules/update/tests/ccc_update_test.info index a541d0def..b80db4dbd 100644 --- a/www7/modules/update/tests/ccc_update_test.info +++ b/www7/modules/update/tests/ccc_update_test.info @@ -4,7 +4,7 @@ package = Testing core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info b/www7/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info index c6507858f..f3bf0a622 100644 --- a/www7/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info +++ b/www7/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info @@ -3,7 +3,7 @@ description = Test theme which is used as admin theme. core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info b/www7/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info index 4f1bb1251..27ca277d3 100644 --- a/www7/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info +++ b/www7/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info @@ -3,7 +3,7 @@ description = Test theme which acts as a base theme for other test subthemes. core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info b/www7/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info index b3d8ba9d3..9184b5c56 100644 --- a/www7/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info +++ b/www7/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info @@ -4,7 +4,7 @@ core = 7.x base theme = update_test_basetheme hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/tests/update_test.info b/www7/modules/update/tests/update_test.info index 4a0ab86a9..6b6a9f7b8 100644 --- a/www7/modules/update/tests/update_test.info +++ b/www7/modules/update/tests/update_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/update/update.info b/www7/modules/update/update.info index 0f591346f..9c49f6dcd 100644 --- a/www7/modules/update/update.info +++ b/www7/modules/update/update.info @@ -6,7 +6,7 @@ core = 7.x files[] = update.test configure = admin/reports/updates/settings -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/user/tests/user_form_test.info b/www7/modules/user/tests/user_form_test.info index 0526ab2b7..a761b4e4e 100644 --- a/www7/modules/user/tests/user_form_test.info +++ b/www7/modules/user/tests/user_form_test.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/modules/user/user.info b/www7/modules/user/user.info index 6c132a38b..e23c49137 100644 --- a/www7/modules/user/user.info +++ b/www7/modules/user/user.info @@ -9,7 +9,7 @@ required = TRUE configure = admin/config/people stylesheets[all][] = user.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/profiles/minimal/minimal.info b/www7/profiles/minimal/minimal.info index a4d469df4..9a5c04d81 100644 --- a/www7/profiles/minimal/minimal.info +++ b/www7/profiles/minimal/minimal.info @@ -5,7 +5,7 @@ core = 7.x dependencies[] = block dependencies[] = dblog -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/profiles/standard/standard.info b/www7/profiles/standard/standard.info index 9c30220f4..beff9922b 100644 --- a/www7/profiles/standard/standard.info +++ b/www7/profiles/standard/standard.info @@ -24,7 +24,7 @@ dependencies[] = field_ui dependencies[] = file dependencies[] = rdf -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/www7/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info index 2adcf3dc3..7600c6a30 100644 --- a/www7/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +++ b/www7/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info @@ -6,7 +6,7 @@ core = 7.x hidden = TRUE files[] = drupal_system_listing_compatible_test.test -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/www7/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info index 8ae9c3fcd..d81c41ded 100644 --- a/www7/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +++ b/www7/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info @@ -8,7 +8,7 @@ version = VERSION core = 6.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/profiles/testing/testing.info b/www7/profiles/testing/testing.info index a8a2c5c98..6646ce611 100644 --- a/www7/profiles/testing/testing.info +++ b/www7/profiles/testing/testing.info @@ -4,7 +4,7 @@ version = VERSION core = 7.x hidden = TRUE -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/themes/bartik/bartik.info b/www7/themes/bartik/bartik.info index 51eb8125d..4d6d16837 100644 --- a/www7/themes/bartik/bartik.info +++ b/www7/themes/bartik/bartik.info @@ -34,7 +34,7 @@ regions[footer] = Footer settings[shortcut_module_link] = 0 -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/themes/garland/garland.info b/www7/themes/garland/garland.info index 450ff95ce..53ff390dc 100644 --- a/www7/themes/garland/garland.info +++ b/www7/themes/garland/garland.info @@ -7,7 +7,7 @@ stylesheets[all][] = style.css stylesheets[print][] = print.css settings[garland_width] = fluid -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/themes/seven/seven.info b/www7/themes/seven/seven.info index 5f53557b3..88d895d66 100644 --- a/www7/themes/seven/seven.info +++ b/www7/themes/seven/seven.info @@ -13,7 +13,7 @@ regions[page_bottom] = Page bottom regions[sidebar_first] = First sidebar regions_hidden[] = sidebar_first -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079" diff --git a/www7/themes/stark/stark.info b/www7/themes/stark/stark.info index a404f692a..e9b2ee0ad 100644 --- a/www7/themes/stark/stark.info +++ b/www7/themes/stark/stark.info @@ -5,7 +5,7 @@ version = VERSION core = 7.x stylesheets[all][] = layout.css -; Information added by Drupal.org packaging script on 2019-01-16 -version = "7.63" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1547681965" +datestamp = "1557336079"