=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d: Validate sub-resource index in d3d12_resource_Unmap().

Alexandre Julliard julliard at winehq.org
Tue Nov 13 13:54:58 CST 2018


Module: vkd3d
Branch: master
Commit: 361e5f627436aad94a12faffe711d5f4df617498
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=361e5f627436aad94a12faffe711d5f4df617498

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Nov 13 00:23:28 2018 +0100

vkd3d: Validate sub-resource index in d3d12_resource_Unmap().

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d/resource.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index 80e7319..f4619ef 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -885,11 +885,19 @@ static void STDMETHODCALLTYPE d3d12_resource_Unmap(ID3D12Resource *iface, UINT s
         const D3D12_RANGE *written_range)
 {
     struct d3d12_resource *resource = impl_from_ID3D12Resource(iface);
+    unsigned int sub_resource_count;
     struct d3d12_device *device;
 
     TRACE("iface %p, sub_resource %u, written_range %p.\n",
             iface, sub_resource, written_range);
 
+    sub_resource_count = d3d12_resource_desc_get_sub_resource_count(&resource->desc);
+    if (sub_resource >= sub_resource_count)
+    {
+        WARN("Sub-resource index %u is out of range (%u sub-resources).\n", sub_resource, sub_resource_count);
+        return;
+    }
+
     if (!resource->map_count)
     {
         WARN("Resource %p is not mapped.\n", resource);




More information about the wine-cvs mailing list