]> git.sur5r.net Git - openldap/commitdiff
Fix unportable code. Thanks, Hallvard.
authorHoward Chu <hyc@openldap.org>
Sun, 25 Jul 1999 22:13:52 +0000 (22:13 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 25 Jul 1999 22:13:52 +0000 (22:13 +0000)
servers/slapd/back-ldap/search.c

index 3541c99046ff7c1d2dcb06dc6a173d4d08ad966a..05c6f2597b200ac705678e12c4eb6e290f3b87d1 100644 (file)
@@ -137,7 +137,7 @@ ldap_send_entry(
        char *a;
        Entry ent;
        BerElement *ber = NULL;
-       Attribute *attr;
+       Attribute *attr, **attrp;
        struct berval *dummy = NULL;
 
        ent.e_dn = ldap_get_dn(lc->ld, e);
@@ -146,19 +146,19 @@ ldap_send_entry(
        ent.e_id = 0;
        ent.e_attrs = 0;
        ent.e_private = 0;
-       attr = (Attribute *)4;
-       attr = (Attribute *)((long)&ent.e_attrs - ((long)&attr->a_next-4));
+       attrp = &ent.e_attrs;
 
        for (a = ldap_first_attribute(lc->ld, e, &ber); a;
                a = ldap_next_attribute(lc->ld, e, ber)) {
-               attr->a_next = (Attribute *)ch_malloc( sizeof(Attribute) );
-               attr=attr->a_next;
+               attr = (Attribute *)ch_malloc( sizeof(Attribute) );
                attr->a_next = 0;
                attr->a_type = ch_strdup(a);
                attr->a_syntax = attr_syntax(a);
                attr->a_vals = ldap_get_values_len(lc->ld, e, a);
                if (!attr->a_vals)
                        attr->a_vals = &dummy;
+               *attrp = attr;
+               attrp = &attr->a_next;
        }
        send_search_entry( be, lc->conn, op, &ent, attrs, attrsonly, NULL );
        for (;ent.e_attrs;) {