summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Madill <jmadill@chromium.org>2022-05-20 10:26:15 -0400
committerMichael BrĂ¼ning <michael.bruning@qt.io>2022-06-16 19:53:14 +0000
commitaf3e1da0322c50415e7a0f9fe36066ef3f52d692 (patch)
treea7a672682013f7729bbb51e2ebdfda3c60ad9666
parenta51ce88a013b388254f51a55639678d1f332ffb1 (diff)
downloadqtwebengine-chromium-af3e1da0322c50415e7a0f9fe36066ef3f52d692.tar.gz
[Backport] CVE-2022-2008: Out of bounds memory access in WebGL
Manual cherry-pick of patch originally reviewed on https://chromium-review.googlesource.com/c/angle/angle/+/3651153: D3D: Fix race condition with parallel shader compile. Bug: chromium:1317673 Change-Id: I0fb7c9a66248852e41e8700e80c295393ef941e8 Reviewed-by: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--chromium/third_party/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/chromium/third_party/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/chromium/third_party/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index b6dc0672678..eb8714503d4 100644
--- a/chromium/third_party/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/chromium/third_party/angle/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1687,12 +1687,6 @@ class ProgramD3D::GetVertexExecutableTask : public ProgramD3D::GetExecutableTask
angle::Result run() override
{
ANGLE_TRACE_EVENT0("gpu.angle", "ProgramD3D::GetVertexExecutableTask::run");
- if (!mProgram->mState.getAttachedShader(gl::ShaderType::Vertex))
- {
- return angle::Result::Continue;
- }
-
- mProgram->updateCachedInputLayoutFromShader();
ANGLE_TRY(mProgram->getVertexExecutableForCachedInputLayout(this, &mExecutable, &mInfoLog));
@@ -2147,6 +2141,11 @@ std::unique_ptr<LinkEvent> ProgramD3D::link(const gl::Context *context,
linkResources(resources);
+ if (mState.getAttachedShader(gl::ShaderType::Vertex))
+ {
+ updateCachedInputLayoutFromShader();
+ }
+
return compileProgramExecutables(context, infoLog);
}
}