From 04a49318cbca9963e2a33c960836eca3c7f5a655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 18 Aug 2022 16:47:13 +0200 Subject: [PATCH] Do not use optional chaining on a potentially undeclared root object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The global "OC" variable may be undefined depending on the initialization order, so optional chaining ("OC?.config" and "OC?.debug") was added to prevent accessing fields on an undefined variable. However, "OC" could be not only undefined, but also undeclared. Optional chaining can not be used on an undeclared root object, so it needs to be explicitly guarded against that to prevent a ReferenceError to be thrown. Signed-off-by: Daniel Calviño Sánchez --- lib/LoggerBuilder.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/LoggerBuilder.ts b/lib/LoggerBuilder.ts index 92caeec7..1bc85a4d 100644 --- a/lib/LoggerBuilder.ts +++ b/lib/LoggerBuilder.ts @@ -15,9 +15,9 @@ export class LoggerBuilder { this.context = {} this.factory = factory // Up to, including, nextcloud 24 the loglevel was not exposed - this.context.level = OC?.config?.loglevel !== undefined ? OC.config.loglevel : LogLevel.Warn + this.context.level = (window.hasOwnProperty('OC') && OC?.config?.loglevel !== undefined) ? OC.config.loglevel : LogLevel.Warn // Override loglevel if we are in debug mode - if (OC?.debug) { + if (window.hasOwnProperty('OC') && OC?.debug) { this.context.level = LogLevel.Debug } }