]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/cache.c
Fix off by one bug
[openldap] / libraries / libldap / cache.c
index 020a1b81f4886d864ba4a824fb619ce0aab84773..82212582c1b02e6ebbc04aff244ca57f350ed93f 100644 (file)
@@ -1,5 +1,6 @@
+/* $OpenLDAP$ */
 /*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -43,7 +44,7 @@ ldap_enable_cache( LDAP *ld, long timeout, ber_len_t maxmem )
                        ld->ld_errno = LDAP_NO_MEMORY;
                        return( -1 );
                }
-               (void) memset( ld->ld_cache, 0, sizeof( LDAPCache ));
+               (void) memset( ld->ld_cache, '\0', sizeof( LDAPCache ));
                ld->ld_cache->lc_memused = sizeof( LDAPCache );
        }
 
@@ -239,7 +240,7 @@ ldap_add_request_to_cache( LDAP *ld, ber_tag_t msgtype, BerElement *request )
                        ld->ld_errno = LDAP_NO_MEMORY;
                        return;
                }
-               SAFEMEMCPY( new->lm_ber->ber_buf, request->ber_buf,
+               AC_MEMCPY( new->lm_ber->ber_buf, request->ber_buf,
                    (size_t)len );
                new->lm_ber->ber_ptr = new->lm_ber->ber_buf;
                new->lm_ber->ber_end = new->lm_ber->ber_buf + len;
@@ -261,8 +262,8 @@ ldap_add_result_to_cache( LDAP *ld, LDAPMessage *result )
        LDAPMessage     *m, **mp, *req, *new, *prev;
        int             err, keep;
 
-       Debug( LDAP_DEBUG_TRACE, "ldap_add_result_to_cache: id %d, type %d\n", 
-               result->lm_msgid, result->lm_msgtype, 0 );
+       Debug( LDAP_DEBUG_TRACE, "ldap_add_result_to_cache: id %ld, type %ld\n", 
+               (long) result->lm_msgid, (long) result->lm_msgtype, 0 );
 
        if ( ld->ld_cache == NULL ||
            ( ld->ld_cache->lc_enabled == 0 )) {
@@ -386,6 +387,7 @@ ldap_check_cache( LDAP *ld, ber_tag_t msgtype, BerElement *request )
                return( -1 );
        }
 
+       reqber.ber_valid = LBER_VALID_BERELEMENT;
        reqber.ber_buf = reqber.ber_ptr = request->ber_buf;
        reqber.ber_end = request->ber_ptr;
 
@@ -394,8 +396,8 @@ ldap_check_cache( LDAP *ld, ber_tag_t msgtype, BerElement *request )
        prev = NULL;
        hash = cache_hash( &reqber );
        for ( m = ld->ld_cache->lc_buckets[ hash ]; m != NULL; m = next ) {
-               Debug( LDAP_DEBUG_TRACE,"cc: examining id %d,type %d\n",
-                   m->lm_msgid, m->lm_msgtype, 0 );
+               Debug( LDAP_DEBUG_TRACE,"cc: examining id %ld,type %ld\n",
+                   (long) m->lm_msgid, (long) m->lm_msgtype, 0 );
                if ( difftime(c_time, m->lm_time) > ld->ld_cache->lc_timeout ) {
                        /* delete expired message */
                        next = m->lm_next;
@@ -441,8 +443,8 @@ ldap_check_cache( LDAP *ld, ber_tag_t msgtype, BerElement *request )
                        prev->lm_chain = new;
                }
                prev = new;
-               Debug( LDAP_DEBUG_TRACE, "cc: added type %d\n",
-                   new->lm_msgtype, 0, 0 );
+               Debug( LDAP_DEBUG_TRACE, "cc: added type %ld\n",
+                   (long) new->lm_msgtype, 0, 0 );
        }
 
        Debug( LDAP_DEBUG_TRACE, "cc: result returned from cache\n", 0, 0, 0 );
@@ -496,7 +498,7 @@ msg_dup( LDAPMessage *msg )
                        LDAP_FREE( (char *)new );
                        return( NULL );
                }
-               SAFEMEMCPY( new->lm_ber->ber_buf, msg->lm_ber->ber_buf,
+               AC_MEMCPY( new->lm_ber->ber_buf, msg->lm_ber->ber_buf,
                    (size_t)len );
                new->lm_ber->ber_ptr = new->lm_ber->ber_buf +
                        ( msg->lm_ber->ber_ptr - msg->lm_ber->ber_buf );