]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/entry.c
More system schema checks
[openldap] / servers / slapd / entry.c
index 08c5fd728d80f40218bee8bb88af6677ecf1aab7..9af12512dcbe2f0c717e11f515c09de764bad4ea 100644 (file)
@@ -1,7 +1,7 @@
 /* entry.c - routines for dealing with entries */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -511,17 +511,17 @@ int entry_encode(Entry *e, struct berval *bv)
        ptr = (unsigned char *)bv->bv_val;
        entry_putlen(&ptr, siz);
        entry_putlen(&ptr, dnlen);
-       memcpy(ptr, e->e_dn, dnlen);
+       AC_MEMCPY(ptr, e->e_dn, dnlen);
        ptr += dnlen;
        *ptr++ = '\0';
        entry_putlen(&ptr, ndnlen);
-       memcpy(ptr, e->e_ndn, ndnlen);
+       AC_MEMCPY(ptr, e->e_ndn, ndnlen);
        ptr += ndnlen;
        *ptr++ = '\0';
 
        for (a=e->e_attrs; a; a=a->a_next) {
                entry_putlen(&ptr, a->a_desc->ad_cname.bv_len);
-               memcpy(ptr, a->a_desc->ad_cname.bv_val,
+               AC_MEMCPY(ptr, a->a_desc->ad_cname.bv_val,
                        a->a_desc->ad_cname.bv_len);
                ptr += a->a_desc->ad_cname.bv_len;
                *ptr++ = '\0';
@@ -626,7 +626,6 @@ int entry_decode(struct berval *bv, Entry **e)
                bptr = (BVarray)(a+1);
                a->a_vals = bptr;
                j = entry_getlen(&ptr);
-               a->a_vals[j].bv_val = NULL;
 
                while (j) {
                        i = entry_getlen(&ptr);
@@ -636,6 +635,9 @@ int entry_decode(struct berval *bv, Entry **e)
                        bptr++;
                        j--;
                }
+               bptr->bv_val = NULL;
+               bptr->bv_len = 0;
+               bptr++;
        }
        if (a)
                a->a_next = NULL;