Setting nTSecurityDescriptor via LDAP fails
authorzahari <zahari@darkstar.zahari.local>
Fri, 20 Mar 2009 10:03:29 +0000 (12:03 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 20 Mar 2009 21:54:15 +0000 (22:54 +0100)
Fix for the problem was substitute talloc_strndup() with
talloc_memdup(), allocate 1 more character and put null character
('\0') in the extra place so data copied is null terminated.

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
source4/lib/ldb/pyldb.c

index c552d6863526509f6a38a94eec871c7808da0462..b91f9b797fb38f6d7c60f9f945db94b0743fd03c 100644 (file)
@@ -1293,9 +1293,11 @@ struct ldb_message_element *PyObject_AsMessageElement(TALLOC_CTX *mem_ctx,
                me->num_values = 1;
                me->values = talloc_array(me, struct ldb_val, me->num_values);
                me->values[0].length = PyString_Size(set_obj);
-               me->values[0].data = (uint8_t *)talloc_strndup(me->values,
+               me->values[0].data = (uint8_t *)talloc_memdup(me->values,
                                        PyString_AsString(set_obj),
-                                       me->values[0].length);
+                                       me->values[0].length + 1);
+               me->values[0].data[me->values[0].length] = '\0';
+
        } else if (PySequence_Check(set_obj)) {
                int i;
                me->num_values = PySequence_Size(set_obj);