summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/ldb_tdb/ldb_pack.c
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2006-03-03 17:44:03 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:52:13 -0500
commit6ef61825541131e16a03975cdbd344e2bbebf810 (patch)
tree694f02c64535972619629f610b90d8057f3a0c32 /source4/lib/ldb/ldb_tdb/ldb_pack.c
parenta7d5bc2dd3837ce98710d0475f16ec571202bab5 (diff)
downloadsamba-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.c15
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;
}