From af345cd6c3fa56ca6ff3377dfd77a387716f1ba3 Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Wed, 13 Jul 2022 18:34:36 +0200 Subject: [PATCH] Validate the range in map_async. (#2876) * Validate the range in map_async. * Add an entry in the changelog. --- CHANGELOG.md | 1 + wgpu-core/src/device/mod.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d6385349..eb7361207 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ Bottom level categories: - Improve the validation and error reporting of buffer mappings by @nical in [#2848](https://github.com/gfx-rs/wgpu/pull/2848) - Fix bind group / pipeline deduplication not taking into account RenderBundle execution resetting these values by @shoebe [#2867](https://github.com/gfx-rs/wgpu/pull/2867) - Fix panics that occur when using `as_hal` functions when the hal generic type does not match the hub being looked up in by @i509VCB [#2871](https://github.com/gfx-rs/wgpu/pull/2871) +- Add some validation in map_async by @nical in [#2876](https://github.com/gfx-rs/wgpu/pull/2876) #### DX12 - `DownlevelCapabilities::default()` now returns the `ANISOTROPIC_FILTERING` flag set to true so DX12 lists `ANISOTROPIC_FILTERING` as true again by @cwfitzgerald in [#2851](https://github.com/gfx-rs/wgpu/pull/2851) diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index eb96d6d7f..6a1dc5c4c 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -5428,6 +5428,16 @@ impl Global { return Err((op, e.into())); } + if range.end > buffer.size { + return Err(( + op, + BufferAccessError::OutOfBoundsOverrun { + index: range.end, + max: buffer.size, + }, + )); + } + buffer.map_state = match buffer.map_state { resource::BufferMapState::Init { .. } | resource::BufferMapState::Active { .. } => { return Err((op, BufferAccessError::AlreadyMapped));