aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Session/CryptoSessionData.php
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2023-11-07 09:13:48 +0100
committerChristoph Wurst <christoph@winzerhof-wurst.at>2023-11-07 09:13:48 +0100
commit63069b649252f8924ec0d42cbdacc8d788668320 (patch)
tree254c669191a1172f5ebe8de137b44de448a2b0ce /lib/private/Session/CryptoSessionData.php
parentf412c8d8c91ef341dd4e7fbfb519b8b8ef04b8fe (diff)
downloadnextcloud-server-63069b649252f8924ec0d42cbdacc8d788668320.tar.gz
nextcloud-server-63069b649252f8924ec0d42cbdacc8d788668320.zip
fix(session): Do not log fresh/empty session as error
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'lib/private/Session/CryptoSessionData.php')
-rw-r--r--lib/private/Session/CryptoSessionData.php30
1 files changed, 18 insertions, 12 deletions
diff --git a/lib/private/Session/CryptoSessionData.php b/lib/private/Session/CryptoSessionData.php
index 76a214584a6..ae4b80209d5 100644
--- a/lib/private/Session/CryptoSessionData.php
+++ b/lib/private/Session/CryptoSessionData.php
@@ -32,6 +32,7 @@ namespace OC\Session;
use OCP\ISession;
use OCP\Security\ICrypto;
use OCP\Session\Exceptions\SessionNotAvailableException;
+use function json_decode;
use function OCP\Log\logger;
/**
@@ -80,19 +81,24 @@ class CryptoSessionData implements \ArrayAccess, ISession {
protected function initializeSession() {
$encryptedSessionData = $this->session->get(self::encryptedSessionName) ?: '';
- try {
- $this->sessionValues = json_decode(
- $this->crypto->decrypt($encryptedSessionData, $this->passphrase),
- true,
- 512,
- JSON_THROW_ON_ERROR,
- );
- } catch (\Exception $e) {
- logger('core')->critical('Could not decrypt or decode encrypted session data', [
- 'exception' => $e,
- ]);
+ if ($encryptedSessionData === '') {
+ // Nothing to decrypt
$this->sessionValues = [];
- $this->regenerateId(true, false);
+ } else {
+ try {
+ $this->sessionValues = json_decode(
+ $this->crypto->decrypt($encryptedSessionData, $this->passphrase),
+ true,
+ 512,
+ JSON_THROW_ON_ERROR,
+ );
+ } catch (\Exception $e) {
+ logger('core')->critical('Could not decrypt or decode encrypted session data', [
+ 'exception' => $e,
+ ]);
+ $this->sessionValues = [];
+ $this->regenerateId(true, false);
+ }
}
}