From 5882648cac32ba84471c66a1a39c283da1a946dc Mon Sep 17 00:00:00 2001 From: acsfer Date: Sun, 25 Apr 2021 13:45:14 +0200 Subject: [PATCH 1/2] Only use libxml_disable_entity_loader on PHP<8 --- lib/private/Installer.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/private/Installer.php b/lib/private/Installer.php index fdf9af7446..71f8fcc6b2 100644 --- a/lib/private/Installer.php +++ b/lib/private/Installer.php @@ -339,9 +339,13 @@ class Installer { } // Check if appinfo/info.xml has the same app ID as well - $loadEntities = libxml_disable_entity_loader(false); - $xml = simplexml_load_file($extractDir . '/' . $folders[0] . '/appinfo/info.xml'); - libxml_disable_entity_loader($loadEntities); + if ((PHP_VERSION_ID < 80000)) { + $loadEntities = libxml_disable_entity_loader(false); + $xml = simplexml_load_file($extractDir . '/' . $folders[0] . '/appinfo/info.xml'); + libxml_disable_entity_loader($loadEntities); + } else { + $xml = simplexml_load_file($extractDir . '/' . $folders[0] . '/appinfo/info.xml'); + } if ((string)$xml->id !== $appId) { throw new \Exception( sprintf( From 3d900b1e5826c1a0fb3b0de99c29306f5e2ae4e7 Mon Sep 17 00:00:00 2001 From: acsfer Date: Sun, 25 Apr 2021 13:50:23 +0200 Subject: [PATCH 2/2] PHP 8+ deprecates openssl_free_key --- lib/private/Installer.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/private/Installer.php b/lib/private/Installer.php index 71f8fcc6b2..da3cef7d1e 100644 --- a/lib/private/Installer.php +++ b/lib/private/Installer.php @@ -307,7 +307,10 @@ class Installer { // Check if the signature actually matches the downloaded content $certificate = openssl_get_publickey($app['certificate']); $verified = (bool)openssl_verify(file_get_contents($tempFile), base64_decode($app['releases'][0]['signature']), $certificate, OPENSSL_ALGO_SHA512); - openssl_free_key($certificate); + // PHP 8+ deprecates openssl_free_key and automatically destroys the key instance when it goes out of scope + if ((PHP_VERSION_ID < 80000)) { + openssl_free_key($certificate); + } if ($verified === true) { // Seems to match, let's proceed