Bug 1339372 - Abort during geolocation request when system DBus is not available; r=kanru
Under some special circumstances the system DBus is not available (for example in sandboxed environment).
This caused a crash during obtaining list of nearby wifi APs for determining user location. This patch
check result of dbus_bus_get() to avoid aborting.
MozReview-Commit-ID: LunRRdQQ4eL
***
Added braces
--- a/netwerk/wifi/nsWifiScannerDBus.cpp
+++ b/netwerk/wifi/nsWifiScannerDBus.cpp
@@ -10,30 +10,35 @@ namespace mozilla {
nsWifiScannerDBus::nsWifiScannerDBus(nsCOMArray<nsWifiAccessPoint> *aAccessPoints)
: mAccessPoints(aAccessPoints)
{
MOZ_ASSERT(mAccessPoints);
mConnection =
already_AddRefed<DBusConnection>(dbus_bus_get(DBUS_BUS_SYSTEM, nullptr));
- MOZ_ASSERT(mConnection);
- dbus_connection_set_exit_on_disconnect(mConnection, false);
+
+ if (mConnection) {
+ dbus_connection_set_exit_on_disconnect(mConnection, false);
+ }
MOZ_COUNT_CTOR(nsWifiScannerDBus);
}
nsWifiScannerDBus::~nsWifiScannerDBus()
{
MOZ_COUNT_DTOR(nsWifiScannerDBus);
}
nsresult
nsWifiScannerDBus::Scan()
{
+ if (!mConnection) {
+ return NS_ERROR_NOT_AVAILABLE;
+ }
return SendMessage("org.freedesktop.NetworkManager",
"/org/freedesktop/NetworkManager",
"GetDevices");
}
nsresult
nsWifiScannerDBus::SendMessage(const char* aInterface,
const char* aPath,