mirror of
https://github.com/nextcloud/server.git
synced 2026-04-05 09:06:35 -04:00
fix: Drop workarounds for unsupported obsolete PHP versions
Also improved error handling in Installer.php to be type safe. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
37c89f4191
commit
5d1ca7e25a
5 changed files with 23 additions and 23 deletions
|
|
@ -30,7 +30,6 @@
|
|||
namespace OC\App;
|
||||
|
||||
use OCP\ICache;
|
||||
use function libxml_disable_entity_loader;
|
||||
use function simplexml_load_string;
|
||||
|
||||
class InfoParser {
|
||||
|
|
@ -59,13 +58,7 @@ class InfoParser {
|
|||
}
|
||||
|
||||
libxml_use_internal_errors(true);
|
||||
if ((PHP_VERSION_ID < 80000)) {
|
||||
$loadEntities = libxml_disable_entity_loader(false);
|
||||
$xml = simplexml_load_string(file_get_contents($file));
|
||||
libxml_disable_entity_loader($loadEntities);
|
||||
} else {
|
||||
$xml = simplexml_load_string(file_get_contents($file));
|
||||
}
|
||||
$xml = simplexml_load_string(file_get_contents($file));
|
||||
|
||||
if ($xml === false) {
|
||||
libxml_clear_errors();
|
||||
|
|
|
|||
|
|
@ -281,10 +281,6 @@ 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);
|
||||
// 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
|
||||
|
|
@ -305,6 +301,15 @@ class Installer {
|
|||
$folders = array_diff($allFiles, ['.', '..']);
|
||||
$folders = array_values($folders);
|
||||
|
||||
if (count($folders) < 1) {
|
||||
throw new \Exception(
|
||||
sprintf(
|
||||
'Extracted app %s has no folders',
|
||||
$appId
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (count($folders) > 1) {
|
||||
throw new \Exception(
|
||||
sprintf(
|
||||
|
|
@ -315,13 +320,17 @@ class Installer {
|
|||
}
|
||||
|
||||
// Check if appinfo/info.xml has the same app ID as well
|
||||
if ((PHP_VERSION_ID < 80000)) {
|
||||
$loadEntities = libxml_disable_entity_loader(false);
|
||||
$xml = simplexml_load_string(file_get_contents($extractDir . '/' . $folders[0] . '/appinfo/info.xml'));
|
||||
libxml_disable_entity_loader($loadEntities);
|
||||
} else {
|
||||
$xml = simplexml_load_string(file_get_contents($extractDir . '/' . $folders[0] . '/appinfo/info.xml'));
|
||||
$xml = simplexml_load_string(file_get_contents($extractDir . '/' . $folders[0] . '/appinfo/info.xml'));
|
||||
|
||||
if ($xml === false) {
|
||||
throw new \Exception(
|
||||
sprintf(
|
||||
'Failed to load info.xml for app id %s',
|
||||
$appId,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ((string)$xml->id !== $appId) {
|
||||
throw new \Exception(
|
||||
sprintf(
|
||||
|
|
|
|||
|
|
@ -294,8 +294,7 @@ class OC_Image implements \OCP\IImage {
|
|||
$retVal = imagegif($this->resource, $filePath);
|
||||
break;
|
||||
case IMAGETYPE_JPEG:
|
||||
/** @psalm-suppress InvalidScalarArgument */
|
||||
imageinterlace($this->resource, (PHP_VERSION_ID >= 80000 ? true : 1));
|
||||
imageinterlace($this->resource, true);
|
||||
$retVal = imagejpeg($this->resource, $filePath, $this->getJpegQuality());
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class App {
|
|||
*/
|
||||
public function __construct(string $appName, array $urlParams = []) {
|
||||
$runIsSetupDirectly = \OC::$server->getConfig()->getSystemValueBool('debug')
|
||||
&& (PHP_VERSION_ID < 70400 || (PHP_VERSION_ID >= 70400 && !ini_get('zend.exception_ignore_args')));
|
||||
&& !ini_get('zend.exception_ignore_args');
|
||||
|
||||
if ($runIsSetupDirectly) {
|
||||
$applicationClassName = get_class($this);
|
||||
|
|
|
|||
|
|
@ -149,8 +149,7 @@ class ImageTest extends \Test\TestCase {
|
|||
$img = new \OC_Image(null, null, $config);
|
||||
$img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.jpg');
|
||||
$raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
|
||||
/** @psalm-suppress InvalidScalarArgument */
|
||||
imageinterlace($raw, (PHP_VERSION_ID >= 80000 ? true : 1));
|
||||
imageinterlace($raw, true);
|
||||
ob_start();
|
||||
imagejpeg($raw, null, 80);
|
||||
$expected = ob_get_clean();
|
||||
|
|
|
|||
Loading…
Reference in a new issue