From 07157944b4c40cbf9542ad3ac86023e7358bcd5e Mon Sep 17 00:00:00 2001 From: Kirill Roskolii <kirill.roskolii@catalyst.net.nz> Date: Thu, 16 Jan 2025 15:05:51 +1300 Subject: [PATCH 1/2] Issue #3500125: Improve error handling during image type detection --- composer.json | 3 ++- ldap_user/src/Processor/DrupalUserProcessor.php | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 9efafbd8..973c56fd 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,8 @@ "drupal/externalauth": "^2.0" }, "provide": { - "ext-ldap": "*" + "ext-ldap": "*", + "ext-exif": "*" }, "repositories": { "drupal": { diff --git a/ldap_user/src/Processor/DrupalUserProcessor.php b/ldap_user/src/Processor/DrupalUserProcessor.php index 532cb1b2..3e10f693 100644 --- a/ldap_user/src/Processor/DrupalUserProcessor.php +++ b/ldap_user/src/Processor/DrupalUserProcessor.php @@ -600,8 +600,15 @@ class DrupalUserProcessor implements LdapUserAttributesInterface { return NULL; } - // @todo Declare dependency on exif or resolve it. $image_type = exif_imagetype($unmanagedFile); + if ($image_type === FALSE) { + $this->detailLog + ->log('Unable to detect image type of @file. Possibly invalid or corrupted image', + ['@file' => $unmanagedFile] + ); + + return NULL; + } $extension = image_type_to_extension($image_type, FALSE); unlink($unmanagedFile); -- GitLab From 719f07dd4ff1a8851ec7b4864b58fbaf7e7e8550 Mon Sep 17 00:00:00 2001 From: bluegeek9 <5614-bluegeek9@users.noreply.drupalcode.org> Date: Mon, 27 Jan 2025 12:35:00 -0600 Subject: [PATCH 2/2] Issue #3500125: Improve error handling during image type detection in \Drupal\ldap_user\Processor\DrupalUserProcessor::saveUserPicture() --- ldap_authentication/src/Form/LdapAuthenticationAdminForm.php | 1 + ldap_servers/src/Helper/ConversionHelper.php | 2 +- ldap_servers/tests/modules/ldap_servers_dummy/src/FakeLdap.php | 2 +- ldap_user/src/Form/LdapUserAdminForm.php | 1 + ldap_user/src/Form/LdapUserMappingBaseForm.php | 1 + ldap_user/src/Processor/OrphanProcessor.php | 2 +- 6 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ldap_authentication/src/Form/LdapAuthenticationAdminForm.php b/ldap_authentication/src/Form/LdapAuthenticationAdminForm.php index ee1f201b..23baa68c 100644 --- a/ldap_authentication/src/Form/LdapAuthenticationAdminForm.php +++ b/ldap_authentication/src/Form/LdapAuthenticationAdminForm.php @@ -76,6 +76,7 @@ final class LdapAuthenticationAdminForm extends ConfigFormBase { parent::__construct($config_factory, $config_type_manager); } else { + // @phpstan-ignore-next-line parent::__construct($config_factory); } diff --git a/ldap_servers/src/Helper/ConversionHelper.php b/ldap_servers/src/Helper/ConversionHelper.php index 9c2d6b2e..98b3fa33 100644 --- a/ldap_servers/src/Helper/ConversionHelper.php +++ b/ldap_servers/src/Helper/ConversionHelper.php @@ -89,7 +89,7 @@ class ConversionHelper { * @return string * Converted string. */ - public static function convertAttribute(string $value, string $conversion = NULL): string { + public static function convertAttribute(string $value, ?string $conversion = NULL): string { switch ($conversion) { case 'base64_encode': diff --git a/ldap_servers/tests/modules/ldap_servers_dummy/src/FakeLdap.php b/ldap_servers/tests/modules/ldap_servers_dummy/src/FakeLdap.php index 867d869e..fbd96863 100644 --- a/ldap_servers/tests/modules/ldap_servers_dummy/src/FakeLdap.php +++ b/ldap_servers/tests/modules/ldap_servers_dummy/src/FakeLdap.php @@ -47,7 +47,7 @@ class FakeLdap implements LdapInterface { /** * {@inheritdoc} */ - public function bind(string $dn = NULL, string $password = NULL): void { + public function bind(?string $dn = NULL, ?string $password = NULL): void { if ($this->bindException) { throw new ConnectionException('Failed connection'); } diff --git a/ldap_user/src/Form/LdapUserAdminForm.php b/ldap_user/src/Form/LdapUserAdminForm.php index d5b3dcdd..34d77ca9 100644 --- a/ldap_user/src/Form/LdapUserAdminForm.php +++ b/ldap_user/src/Form/LdapUserAdminForm.php @@ -84,6 +84,7 @@ final class LdapUserAdminForm extends ConfigFormBase implements LdapUserAttribut parent::__construct($config_factory, $config_type_manager); } else { + // @phpstan-ignore-next-line parent::__construct($config_factory); } diff --git a/ldap_user/src/Form/LdapUserMappingBaseForm.php b/ldap_user/src/Form/LdapUserMappingBaseForm.php index 0e313495..d3b847ed 100644 --- a/ldap_user/src/Form/LdapUserMappingBaseForm.php +++ b/ldap_user/src/Form/LdapUserMappingBaseForm.php @@ -95,6 +95,7 @@ abstract class LdapUserMappingBaseForm extends ConfigFormBase implements LdapUse parent::__construct($config_factory, $config_type_manager); } else { + // @phpstan-ignore-next-line parent::__construct($config_factory); } diff --git a/ldap_user/src/Processor/OrphanProcessor.php b/ldap_user/src/Processor/OrphanProcessor.php index 28acbfa4..e2955db7 100644 --- a/ldap_user/src/Processor/OrphanProcessor.php +++ b/ldap_user/src/Processor/OrphanProcessor.php @@ -374,7 +374,7 @@ class OrphanProcessor { ->load($user['uid']); $method = $this->configLdapUser->get('orphanedDrupalAcctBehavior'); switch ($method) { - case 'ldap_user_orphan_email'; + case 'ldap_user_orphan_email': $link = Url::fromRoute('entity.user.edit_form', ['user' => $user['uid']])->setAbsolute(); $this->emailList[] = $account->getAccountName() . ',' . $account->getEmail() . ',' . $link->toString(); $account->set('ldap_user_last_checked', time())->save(); -- GitLab