From eb6e5a27a34060b7e410fd8013ce12134cda7f68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julius=20H=C3=A4rtl?= <jus@bitgrid.net>
Date: Wed, 28 Mar 2018 11:12:56 +0200
Subject: [PATCH] Do not fail hard if no appinfo is returned during update
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Julius Härtl <jus@bitgrid.net>
---
 lib/private/App/AppManager.php | 6 ++++--
 lib/private/Updater.php        | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 442fc1a0e1b..4d0859b1988 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -358,7 +358,7 @@ class AppManager implements IAppManager {
 	 *
 	 * @param bool $path
 	 * @param null $lang
-	 * @return array app info
+	 * @return array|null app info
 	 */
 	public function getAppInfo(string $appId, bool $path = false, $lang = null) {
 		if ($path) {
@@ -411,7 +411,9 @@ class AppManager implements IAppManager {
 		$incompatibleApps = array();
 		foreach ($apps as $appId) {
 			$info = $this->getAppInfo($appId);
-			if (!\OC_App::isAppCompatible($version, $info)) {
+			if ($info === null) {
+				$incompatibleApps[] = ['id' => $appId];
+			} else if (!\OC_App::isAppCompatible($version, $info)) {
 				$incompatibleApps[] = $info;
 			}
 		}
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 4dc8edc0272..49a4a1094ed 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -391,7 +391,7 @@ class Updater extends BasicEmitter {
 		foreach ($apps as $app) {
 			// check if the app is compatible with this version of ownCloud
 			$info = OC_App::getAppInfo($app);
-			if(!OC_App::isAppCompatible($version, $info)) {
+			if($info === null || !OC_App::isAppCompatible($version, $info)) {
 				if ($appManager->isShipped($app)) {
 					throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update');
 				}
-- 
GitLab