[PATCH 4/6] winealsa.drv: Append hw address to handle to prevent name collision. (resend)

Vitaliy Margolen wine-devel at kievinfo.com
Sun Aug 29 23:09:48 CDT 2010


On 08/29/2010 12:43 AM, Jeff Cook wrote:
> On Tue, Aug 3, 2010 at 7:49 AM, Vitaliy Margolen
> <wine-devel at kievinfo.com>  wrote:
>>> +    memcpy(ww->ds_desc.szDesc, description,
>>> +            min( (sizeof(ww->ds_desc.szDesc) - 1), strlen(description))
>>> );
>>
>> This does not guarantee that ww->ds_desc.szDesc will be \0 terminated.
>>
>> Vitaliy.
>>
> What do you want me to do? This looks pretty safe to me and I just
> copied the block from elsewhere and replaced the variables. Do you
> want me to manually read to the end of ww->ds_desc.szDesc and replace
> with a \0? Sorry for the noobness.

strlen returns number of characters without terminating \0. If you using 
memcpy to copy strings you must add additional byte (if destination is big 
enough). Or explicitly zero terminate the destination string (if result was 
truncated).

What you really want is a strlcpy() which unfortunately not present on all 
platforms. And don't even think using strncpy - it's the worst string 
function ever made.

Just the fact that you copied the exact code doesn't automatically make it 
correct.

Vitaliy.



More information about the wine-devel mailing list