Henri Verbeet : wined3d: Refuse to parse shaders with an invalid version token.
Alexandre Julliard
julliard at winehq.org
Mon Oct 26 10:08:33 CDT 2009
Module: wine
Branch: master
Commit: de82b55b209c454c903f25bb4dff5a1628f8c325
URL: http://source.winehq.org/git/wine.git/?a=commit;h=de82b55b209c454c903f25bb4dff5a1628f8c325
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Oct 26 10:12:17 2009 +0100
wined3d: Refuse to parse shaders with an invalid version token.
---
dlls/wined3d/shader_sm1.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/shader_sm1.c b/dlls/wined3d/shader_sm1.c
index aef817e..64876b3 100644
--- a/dlls/wined3d/shader_sm1.c
+++ b/dlls/wined3d/shader_sm1.c
@@ -506,7 +506,18 @@ static int shader_skip_unrecognized(const struct wined3d_sm1_data *priv, const D
static void *shader_sm1_init(const DWORD *byte_code, const struct wined3d_shader_signature *output_signature)
{
- struct wined3d_sm1_data *priv = HeapAlloc(GetProcessHeap(), 0, sizeof(*priv));
+ struct wined3d_sm1_data *priv;
+ BYTE major, minor;
+
+ major = WINED3D_SM1_VERSION_MAJOR(*byte_code);
+ minor = WINED3D_SM1_VERSION_MINOR(*byte_code);
+ if (WINED3D_SHADER_VERSION(major, minor) > WINED3D_SHADER_VERSION(3, 0))
+ {
+ WARN("Invalid shader version %u.%u (%#x).\n", major, minor, *byte_code);
+ return NULL;
+ }
+
+ priv = HeapAlloc(GetProcessHeap(), 0, sizeof(*priv));
if (!priv)
{
ERR("Failed to allocate private data\n");
More information about the wine-cvs
mailing list