r19192: merge from samba4:
authorStefan Metzmacher <metze@samba.org>
Mon, 9 Oct 2006 08:26:58 +0000 (08:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:15:21 +0000 (12:15 -0500)
ensure that data values from ldap libs are null terminated, to allow
ldb_msg_find_attr_as_string() to work correctly.

Thanks to Jim Myers for spotting this!

metze
(This used to be commit a5ea82bb05fb9d5c1842f9a105f6a10e39141c89)

source3/lib/ldb/ldb_ldap/ldb_ldap.c

index 9de67e5ad7f306f178abc74cac3c44679ac1a3e9..10563816b9770bd4279b92e992f4a5def4403746 100644 (file)
@@ -210,10 +210,15 @@ static int lldb_add_msg_attr(struct ldb_context *ldb,
        }
 
        for (i=0;i<count;i++) {
-               el->values[i].data = talloc_memdup(el->values, bval[i]->bv_val, bval[i]->bv_len);
+               /* we have to ensure this is null terminated so that
+                  ldb_msg_find_attr_as_string() can work */
+               el->values[i].data = talloc_size(el->values, bval[i]->bv_len+1);
                if (!el->values[i].data) {
+                       errno = ENOMEM;
                        return -1;
                }
+               memcpy(el->values[i].data, bval[i]->bv_val, bval[i]->bv_len);
+               el->values[i].data[bval[i]->bv_len] = 0;
                el->values[i].length = bval[i]->bv_len;
                el->num_values++;
        }