[PATCH] d3dx9: Avoid overflowing debug channel buffer when tracing ASCII effect errors.
Matteo Bruni
mbruni at codeweavers.com
Tue Jun 28 12:06:04 CDT 2016
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
Inspired by a patch by Alistair Leslie-Hughes.
dlls/d3dx9_36/effect.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index fd8d59e..42f5aea 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -5969,7 +5969,22 @@ static HRESULT d3dx9_base_effect_init(struct d3dx9_base_effect *base,
if (bytecode)
ID3D10Blob_Release(bytecode);
if (temp_errors)
- TRACE("%s\n", (char *)ID3D10Blob_GetBufferPointer(temp_errors));
+ {
+ const char *error_string = ID3D10Blob_GetBufferPointer(temp_errors);
+ const char *string_ptr;
+
+ while (*error_string)
+ {
+ string_ptr = error_string;
+ while (*string_ptr && *string_ptr != '\n' && *string_ptr != '\r'
+ && string_ptr - error_string < 80)
+ ++string_ptr;
+ TRACE("%s\n", debugstr_an(error_string, string_ptr - error_string));
+ error_string = string_ptr;
+ while (*error_string == '\n' || *error_string == '\r')
+ ++error_string;
+ }
+ }
if (errors)
*errors = temp_errors;
else if (temp_errors)
--
2.7.3
More information about the wine-patches
mailing list