[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