diff --git includes/updater.inc includes/updater.inc
index d86040c..e0a47b5 100644
--- includes/updater.inc
+++ includes/updater.inc
@@ -179,7 +179,7 @@ class Updater {
   public static function getProjectTitle($directory) {
     $info_file = self::findInfoFile($directory);
     $info = drupal_parse_info_file($info_file);
-    if (!$info) {
+    if (empty($info['name'])) {
       throw new UpdaterException(t('Unable to parse info file.'));
     }
     return $info['name'];
diff --git modules/update/update.module modules/update/update.module
index 6ff35f5..7c2238e 100644
--- modules/update/update.module
+++ 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)) {
