Hans Leidekker (@hans) commented about dlls/kerberos/unixlib.c:
DWORD len_data, len_token; int conf_state;
len_data = params->data_length;
len_token = params->token_length;
input.length = len_data + len_token;
if (!(input.value = malloc( input.length ))) return SEC_E_INSUFFICIENT_MEMORY;
memcpy( input.value, params->data, len_data );
memcpy( (char *)input.value + len_data, params->token, len_token );
- if (params->stream_length)
- {
input.length = params->stream_length;
if (!(input.value = malloc( input.length ))) return SEC_E_INSUFFICIENT_MEMORY;
memcpy( input.value, params->stream, params->stream_length );
- }
We can actually avoid the buffer copy in this case.