diff options
author | Simo Sorce <idra@samba.org> | 2006-03-03 17:44:03 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:52:13 -0500 |
commit | 6ef61825541131e16a03975cdbd344e2bbebf810 (patch) | |
tree | 694f02c64535972619629f610b90d8057f3a0c32 /source4/lib/ldb/ldb_tdb/ldb_pack.c | |
parent | a7d5bc2dd3837ce98710d0475f16ec571202bab5 (diff) | |
download | samba-6ef61825541131e16a03975cdbd344e2bbebf810.tar.gz samba-6ef61825541131e16a03975cdbd344e2bbebf810.tar.bz2 samba-6ef61825541131e16a03975cdbd344e2bbebf810.zip |
r13818: Make ldb_tdb 'fake' async.
Simo.
(This used to be commit 0db616ef59ed51cac7e0bfaea8a799d5aa42ef16)
Diffstat (limited to 'source4/lib/ldb/ldb_tdb/ldb_pack.c')
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_pack.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_pack.c b/source4/lib/ldb/ldb_tdb/ldb_pack.c index e8654f7a53..c6edf663ae 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_pack.c +++ b/source4/lib/ldb/ldb_tdb/ldb_pack.c @@ -240,7 +240,11 @@ int ltdb_unpack_data(struct ldb_module *module, goto failed; } message->elements[i].flags = 0; - message->elements[i].name = (char *)p; + message->elements[i].name = talloc_strndup(message->elements, (char *)p, len); + if (message->elements[i].name == NULL) { + errno = ENOMEM; + goto failed; + } remaining -= len + 1; p += len + 1; message->elements[i].num_values = pull_uint32(p, 0); @@ -264,7 +268,14 @@ int ltdb_unpack_data(struct ldb_module *module, } message->elements[i].values[j].length = len; - message->elements[i].values[j].data = p+4; + message->elements[i].values[j].data = talloc_size(message->elements[i].values, len+1); + if (message->elements[i].values[j].data == NULL) { + errno = ENOMEM; + goto failed; + } + memcpy(message->elements[i].values[j].data, p+4, len); + message->elements[i].values[j].data[len] = 0; + remaining -= len+4+1; p += len+4+1; } |