Henri Verbeet : d3d11: Validate the DXBC version.

Alexandre Julliard julliard at winehq.org
Fri Jan 19 15:43:21 CST 2018


Module: wine
Branch: master
Commit: ed0b366322f4bd36d6462294bc529b25a073f369
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ed0b366322f4bd36d6462294bc529b25a073f369

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Jan 19 19:25:15 2018 +0100

d3d11: Validate the DXBC version.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d11/utils.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/d3d11/utils.c b/dlls/d3d11/utils.c
index c9e137c..c72216d 100644
--- a/dlls/d3d11/utils.c
+++ b/dlls/d3d11/utils.c
@@ -789,6 +789,7 @@ HRESULT parse_dxbc(const char *data, SIZE_T data_size,
     DWORD chunk_count;
     DWORD total_size;
     unsigned int i;
+    DWORD version;
     DWORD tag;
 
     read_dword(&ptr, &tag);
@@ -803,7 +804,13 @@ HRESULT parse_dxbc(const char *data, SIZE_T data_size,
     WARN("Ignoring DXBC checksum.\n");
     skip_dword_unknown(&ptr, 4);
 
-    skip_dword_unknown(&ptr, 1); /* It seems to always be 0x00000001. */
+    read_dword(&ptr, &version);
+    TRACE("version: %#x.\n", version);
+    if (version != 0x00000001)
+    {
+        WARN("Got unexpected DXBC version %#x.\n", version);
+        return E_INVALIDARG;
+    }
 
     read_dword(&ptr, &total_size);
     TRACE("total size: %#x\n", total_size);




More information about the wine-cvs mailing list