ldb: Cope with a->name being *
authorAndrew Bartlett <abartlet@samba.org>
Tue, 29 Nov 2016 03:20:07 +0000 (16:20 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 1 Dec 2016 04:54:23 +0000 (05:54 +0100)
The default schema when loaded from the DB will have a name of *, not NULL.

This feature is rarely used, and was incompatible with the rdn_name module
until now.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
lib/ldb/modules/rdn_name.c

index 469778227eddf6173d8e504471d430e6689daaed..e69ad9315aece96bc4df126493416c9914918b4c 100644 (file)
@@ -144,7 +144,7 @@ static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
        attribute = ldb_msg_find_element(msg, rdn_name);
        if (!attribute) {
                /* add entry with normalised RDN information if possible */
-               if (a->name != NULL) {
+               if (a->name != NULL && strcmp(a->name, "*") != 0) {
                        ret = ldb_msg_add_value(msg, a->name, &rdn_val, NULL);
                } else {
                        ret = ldb_msg_add_value(msg, rdn_name, &rdn_val, NULL);
@@ -154,7 +154,7 @@ static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
                }
        } else {
                /* normalise attribute name if possible */
-               if (a->name != NULL) {
+               if (a->name != NULL && strcmp(a->name, "*") != 0) {
                        attribute->name = a->name;
                }
                /* normalise attribute value */
@@ -292,7 +292,7 @@ static int rdn_rename_callback(struct ldb_request *req, struct ldb_reply *ares)
                goto error;
        }
 
-       if (a->name != NULL) {
+       if (a->name != NULL && strcmp(a->name, "*") != 0) {
                rdn_name = a->name;
        }
 
@@ -440,7 +440,7 @@ static int rdn_name_modify(struct ldb_module *module, struct ldb_request *req)
                        return ldb_module_operr(module);
                }
 
-               if (a->name != NULL) {
+               if (a->name != NULL && strcmp(a->name, "*") != 0) {
                        rdn_name = a->name;
                }