diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2011-01-02 23:28:16 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2011-01-02 23:28:16 +0000 |
commit | 8ae6dc4b2ecaa669e061aac7879435be01021c33 (patch) | |
tree | b25817155593a6adf04f8255c60ba53846526fa7 | |
parent | 8f5506f89cafca719f2fe63b336e6b6185e28d1a (diff) | |
download | brdo-8ae6dc4b2ecaa669e061aac7879435be01021c33.tar.gz brdo-8ae6dc4b2ecaa669e061aac7879435be01021c33.tar.bz2 |
#936490 by dww, fago: Fixed Update module should verify downloaded tarballs and propagate errors correctly
-rw-r--r-- | includes/updater.inc | 9 | ||||
-rw-r--r-- | modules/update/update.module | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/includes/updater.inc b/includes/updater.inc index d86040c5b..b49d5d21f 100644 --- a/includes/updater.inc +++ b/includes/updater.inc @@ -137,7 +137,7 @@ class Updater { * Path to the info file. */ public static function findInfoFile($directory) { - $info_files = file_scan_directory($directory, '/.*\.info/'); + $info_files = file_scan_directory($directory, '/.*\.info$/'); if (!$info_files) { return FALSE; } @@ -179,8 +179,11 @@ class Updater { public static function getProjectTitle($directory) { $info_file = self::findInfoFile($directory); $info = drupal_parse_info_file($info_file); - if (!$info) { - throw new UpdaterException(t('Unable to parse info file.')); + if (empty($info)) { + throw new UpdaterException(t('Unable to parse info file: %info_file.', array('%info_file' => $info_file))); + } + if (empty($info['name'])) { + throw new UpdaterException(t("The info file (%info_file) does not define a 'name' attribute.", array('%info_file' => $info_file))); } return $info['name']; } diff --git a/modules/update/update.module b/modules/update/update.module index 8891a5067..a4a4c3e8c 100644 --- a/modules/update/update.module +++ b/modules/update/update.module @@ -696,14 +696,14 @@ function update_verify_update_archive($project, $archive_file, $directory) { // Parse all the .info files and make sure they're compatible with this // version of Drupal core. $incompatible = array(); - $files = file_scan_directory("$directory/$project", '/^' . DRUPAL_PHP_FUNCTION_PATTERN . '\.info/', array('key' => 'name', 'min_depth' => 0)); + $files = file_scan_directory("$directory/$project", '/^' . DRUPAL_PHP_FUNCTION_PATTERN . '\.info$/', array('key' => 'name', 'min_depth' => 0)); foreach ($files as $key => $file) { // Get the .info file for the module or theme this file belongs to. $info = drupal_parse_info_file($file->uri); // If the module or theme is incompatible with Drupal core, set an error. if (empty($info['core']) || $info['core'] != DRUPAL_CORE_COMPATIBILITY) { - $incompatible[] = $info['name']; + $incompatible[] = !empty($info['name']) ? $info['name'] : t('Unknown'); } } if (!empty($incompatible)) { |