[PATCH 3/5] wined3d: Refuse to parse shaders with an invalid version token.
Henri Verbeet
hverbeet at codeweavers.com
Mon Oct 26 04:12:17 CDT 2009
---
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");
--
1.6.4.4
More information about the wine-patches
mailing list