diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-10-12 08:11:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:39:42 -0500 |
commit | dc3e65b25295f68d0c7c5d3a7cc9bade638661f4 (patch) | |
tree | 3752fe1513d288c234f24c74ebf3c35585e3e45d /source4/lib/ldb/common/ldb_msg.c | |
parent | 35720734911169acde6bf9f2c9a1f83336744f6f (diff) | |
download | samba-dc3e65b25295f68d0c7c5d3a7cc9bade638661f4.tar.gz samba-dc3e65b25295f68d0c7c5d3a7cc9bade638661f4.tar.bz2 samba-dc3e65b25295f68d0c7c5d3a7cc9bade638661f4.zip |
r10917: copy the element name in a ldb_msg_rename_attr() and ldb_msg_copy_attr() to ensure
that callers (like the ldap server) can talloc_steal the name
(This used to be commit 9c914542cc346758c82f89990c80eb096a9c0959)
Diffstat (limited to 'source4/lib/ldb/common/ldb_msg.c')
-rw-r--r-- | source4/lib/ldb/common/ldb_msg.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c index 1c7ae3920a..a72a4616fb 100644 --- a/source4/lib/ldb/common/ldb_msg.c +++ b/source4/lib/ldb/common/ldb_msg.c @@ -587,12 +587,17 @@ int ldb_attr_in_list(const char * const *attrs, const char *attr) /* rename the specified attribute in a search result */ -void ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace) +int ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace) { struct ldb_message_element *el = ldb_msg_find_element(msg, attr); - if (el != NULL) { - el->name = replace; + if (el == NULL) { + return 0; + } + el->name = talloc_strdup(msg->elements, replace); + if (el->name == NULL) { + return -1; } + return 0; } @@ -608,8 +613,7 @@ int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *rep if (ldb_msg_add(msg, el, 0) != 0) { return -1; } - ldb_msg_rename_attr(msg, attr, replace); - return 0; + return ldb_msg_rename_attr(msg, attr, replace); } |