diff options
-rw-r--r-- | source3/lib/util.c | 9 | ||||
-rw-r--r-- | source3/libsmb/clispnego.c | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c index 63939e0ecf..3409124fe2 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -2098,17 +2098,22 @@ static void free_data_blob(DATA_BLOB *d) /******************************************************************* construct a data blob, must be freed with data_blob_free() + you can pass NULL for p and get a blank data blob *******************************************************************/ DATA_BLOB data_blob(const void *p, size_t length) { DATA_BLOB ret; - if (!p || !length) { + if (!length) { ZERO_STRUCT(ret); return ret; } - ret.data = smb_xmemdup(p, length); + if (p) { + ret.data = smb_xmemdup(p, length); + } else { + ret.data = smb_xmalloc(length); + } ret.length = length; ret.free = free_data_blob; return ret; diff --git a/source3/libsmb/clispnego.c b/source3/libsmb/clispnego.c index bc3873bf18..035b47b417 100644 --- a/source3/libsmb/clispnego.c +++ b/source3/libsmb/clispnego.c @@ -486,9 +486,7 @@ BOOL msrpc_gen(DATA_BLOB *blob, va_end(ap); /* allocate the space, then scan the format again to fill in the values */ - blob->data = malloc(head_size + data_size); - blob->length = head_size + data_size; - if (!blob->data) return False; + *blob = data_blob(NULL, head_size + data_size); head_ofs = 0; data_ofs = head_size; |