if (p) {
ret.data = smb_xmemdup(p, length);
} else {
- ret.data = smb_xmalloc(length);
+ ret.data = SMB_XMALLOC_ARRAY(char, length);
}
ret.length = length;
ret.free = free_data_blob;
{
DATA_BLOB ret;
- if (!p || !length) {
+ if (!length) {
ZERO_STRUCT(ret);
return ret;
}
- ret.data = talloc_memdup(mem_ctx, p, length);
- if (ret.data == NULL)
- smb_panic("data_blob_talloc: talloc_memdup failed.\n");
+ if (p) {
+ ret.data = TALLOC_MEMDUP(mem_ctx, p, length);
+ if (ret.data == NULL)
+ smb_panic("data_blob_talloc: talloc_memdup failed.\n");
+ } else {
+ ret.data = TALLOC(mem_ctx, length);
+ if (ret.data == NULL)
+ smb_panic("data_blob_talloc: talloc failed.\n");
+ }
ret.length = length;
ret.free = NULL;