Bug 1389227 - Avoid accessing invalid array index in vr controllers when stopping vibrate; r?kip
MozReview-Commit-ID: NR5FLllABm
--- a/gfx/vr/gfxVROculus.cpp
+++ b/gfx/vr/gfxVROculus.cpp
@@ -1742,17 +1742,18 @@ VRSystemManagerOculus::VibrateHaptic(uin
controller->VibrateHaptic(mSession->Get(), aHapticIndex, aIntensity, aDuration, aPromiseID);
}
void
VRSystemManagerOculus::StopVibrateHaptic(uint32_t aControllerIdx)
{
// The session is available after VRDisplay is created
// at GetHMDs().
- if (!mSession || !mSession->IsTrackingReady()) {
+ if (!mSession || !mSession->IsTrackingReady() ||
+ (aControllerIdx >= mOculusController.Length())) {
return;
}
RefPtr<impl::VRControllerOculus> controller = mOculusController[aControllerIdx];
MOZ_ASSERT(controller);
controller->StopVibrateHaptic();
}
--- a/gfx/vr/gfxVROpenVR.cpp
+++ b/gfx/vr/gfxVROpenVR.cpp
@@ -942,17 +942,17 @@ VRSystemManagerOpenVR::VibrateHaptic(uin
controller->VibrateHaptic(mVRSystem, aHapticIndex, aIntensity, aDuration, aPromiseID);
}
void
VRSystemManagerOpenVR::StopVibrateHaptic(uint32_t aControllerIdx)
{
// mVRSystem is available after VRDisplay is created
// at GetHMDs().
- if (!mVRSystem) {
+ if (!mVRSystem || (aControllerIdx >= mOpenVRController.Length())) {
return;
}
RefPtr<impl::VRControllerOpenVR> controller = mOpenVRController[aControllerIdx];
MOZ_ASSERT(controller);
controller->StopVibrateHaptic();
}