[PATCH] wined3d: Split comments in separate line to avoid buffer overflow when traces are enabled (try 2)
Christian Costa
titan.costa at wanadoo.fr
Thu Feb 18 05:33:02 CST 2010
Henri Verbeet a écrit :
> On 17 February 2010 17:54, Christian Costa <titan.costa at wanadoo.fr> wrote:
>
>> + if (TRACE_ON(d3d_shader))
>> + {
>> + int size = strlen(comment) + 1;
>> + char* str = (char*)HeapAlloc(GetProcessHeap(), 0, size);
>> + int i = 0;
>> + char* line = str;
>> + memcpy(str, comment, size);
>> + DPRINTF("//");
>> + while (i < size)
>> + {
>> + /* Find end of line */
>> + while ((str[i] != 0) && (str[i] != 0x0a))
>> + i++;
>> + /* Terminate line and remove preceding 0x0d if any */
>> + if (i && (str[i-1] == 0x0d))
>> + str[i-1] = 0;
>> + else
>> + str[i] = 0;
>> + /* Display line and prepare next line */
>> + DPRINTF("%s\n", debugstr_an(line, strlen(line)));
>> + i++;
>> + line = str + i;
>> + }
>> + }
>>
> This code has several obvious issues.
>
>
>
>
>
Right. HeapFree call and HeapAlloc failure handling are missing. I could
also do something with the leading // in
the case of an empty string (if this could ever happen).
If there are other obvious issues I've forgotten. Please be more accurate.
More information about the wine-devel
mailing list