diff options
author | Daniel Adams <70986246+msub2@users.noreply.github.com> | 2024-09-05 03:39:27 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-05 03:39:27 +0000 |
commit | 75c7712905c522f604a454dcb1c18b8e3f163d3b (patch) | |
tree | ab9db26cd0ca77a973ba1ae5f68a7c2f25fa3ef8 /components/script/dom/xrrigidtransform.rs | |
parent | aadc212b95cdef2a25475f025aa7fab659dde646 (diff) | |
download | servo-75c7712905c522f604a454dcb1c18b8e3f163d3b.tar.gz servo-75c7712905c522f604a454dcb1c18b8e3f163d3b.zip |
webxr: Add some missing internal checks/validation (#33318)
* Ensure depthFar is non-negative
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Properly append default features in requestSession
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Ensure XRRigidTransform init members have finite values
Signed-off-by: Daniel Adams <msub2official@gmail.com>
---------
Signed-off-by: Daniel Adams <msub2official@gmail.com>
Diffstat (limited to 'components/script/dom/xrrigidtransform.rs')
-rw-r--r-- | components/script/dom/xrrigidtransform.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index a90121ee424..c1b2aafe580 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -83,6 +83,26 @@ impl XRRigidTransform { ))); } + if !position.x.is_finite() || + !position.y.is_finite() || + !position.z.is_finite() || + !position.w.is_finite() + { + return Err(Error::Type( + "Position must not contain non-finite values".into(), + )); + } + + if !orientation.x.is_finite() || + !orientation.y.is_finite() || + !orientation.z.is_finite() || + !orientation.w.is_finite() + { + return Err(Error::Type( + "Orientation must not contain non-finite values".into(), + )); + } + let translate = Vector3D::new(position.x as f32, position.y as f32, position.z as f32); let rotate = Rotation3D::unit_quaternion( orientation.x as f32, |