simple fix for creating blank data blobs
authorAndrew Tridgell <tridge@samba.org>
Sat, 5 Jan 2002 23:30:59 +0000 (23:30 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sat, 5 Jan 2002 23:30:59 +0000 (23:30 +0000)
(This used to be commit 08bb2dfec2ca0282e9268d09da2b966d3bdf493a)

source3/lib/util.c
source3/libsmb/clispnego.c

index 63939e0ecfa4e6df631f525abe5486fb4ad1c0ca..3409124fe257527f575438d5b7d563e3734d231b 100644 (file)
@@ -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;
index bc3873bf1867e6dcf34c1a7b13c29d1435206b74..035b47b4171c9a784a95b9e451ba3a1bfd942ccf 100644 (file)
@@ -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;