summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2020-06-27 02:09:19 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-06-27 02:09:19 +0200
commitc7330b5eb48cdd69b06e5f55643ea4c94303381f (patch)
treec66c62b4195c335e3827bb24a0dbfc2d01b4249e
parentc05d07a68761dac4be7f5371d5c7c4c0d35910f7 (diff)
downloadUXP-c7330b5eb48cdd69b06e5f55643ea4c94303381f.tar
UXP-c7330b5eb48cdd69b06e5f55643ea4c94303381f.tar.gz
UXP-c7330b5eb48cdd69b06e5f55643ea4c94303381f.tar.lz
UXP-c7330b5eb48cdd69b06e5f55643ea4c94303381f.tar.xz
UXP-c7330b5eb48cdd69b06e5f55643ea4c94303381f.zip
Issue #1602 - Make sure we have a JSObject before trying to get global.
Dynamic script loading/unloading (thank you modules) can yank the script out from under us before the JS API for it is initialized, leading to null deref crashes. This adds a simple check if the passed-in object is sane and present. Resolves #1602
-rw-r--r--dom/base/ScriptSettings.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/dom/base/ScriptSettings.cpp b/dom/base/ScriptSettings.cpp
index d67f2167a..92ab221c9 100644
--- a/dom/base/ScriptSettings.cpp
+++ b/dom/base/ScriptSettings.cpp
@@ -485,7 +485,13 @@ AutoJSAPI::Init(nsIGlobalObject* aGlobalObject)
bool
AutoJSAPI::Init(JSObject* aObject)
{
- return Init(xpc::NativeGlobal(aObject));
+ nsIGlobalObject* global = nullptr;
+ if (aObject)
+ global = xpc::NativeGlobal(aObject);
+ if (global)
+ return Init(global);
+ else
+ return false;
}
bool