]> git.sur5r.net Git - openldap/commitdiff
ITS#6080
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 1 May 2009 21:28:56 +0000 (21:28 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 1 May 2009 21:28:56 +0000 (21:28 +0000)
CHANGES
include/lber.h
libraries/liblber/memory.c

diff --git a/CHANGES b/CHANGES
index 3be2095248f30a48a1096830ddf245c01b53f719..5431c3aa61c2d2f7e872d0fdb3f894e27d3cc838 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,7 +3,7 @@ OpenLDAP 2.4 Change Log
 OpenLDAP 2.4.17 Engineering
        Fixed libldap gnutls private key init (ITS#6053)
        Fixed liblutil opendir/closedir on windows (ITS#6041)
-       Fixed liblutil for _GNU_SOURCE (ITS#5464,ITS#5666)
+       Fixed liblutil to use ber_strnlen (ITS#5464,ITS#5666,ITS#6080)
        Fixed slapd errno handling (ITS#6037)
        Fixed slapd global alloc handling (ITS#6054)
        Fixed slapd moduleload with static backends and modules (ITS#6016)
index cbd2d64745d65dade93bcd5a2cbdb64852c88870..e3a8e668a8f3fe3802720ba297ff7e59f231bf40 100644 (file)
@@ -629,6 +629,14 @@ LBER_F( char * )
 ber_strdup LDAP_P((
        LDAP_CONST char * ));
 
+LBER_F( ber_len_t )
+ber_strnlen LDAP_P((
+       LDAP_CONST char *s, ber_len_t len ));
+
+LBER_F( char * )
+ber_strndup LDAP_P((
+       LDAP_CONST char *s, ber_len_t l ));
+
 LBER_F( struct berval * )
 ber_bvreplace LDAP_P((
        struct berval *dst, LDAP_CONST struct berval *src ));
index 6cf60ad284eaedd083b8607992a83a345b2f1b03..284cd04b8ebc66951801ad7a1d67ac9144ca0c4d 100644 (file)
@@ -651,6 +651,16 @@ ber_strdup( LDAP_CONST char *s )
        return ber_strdup_x( s, NULL );
 }
 
+ber_len_t
+ber_strnlen( LDAP_CONST char *s, ber_len_t len )
+{
+       ber_len_t l;
+
+       for ( l = 0; l < len && s[l] != '\0'; l++ ) ;
+
+       return l;
+}
+
 char *
 ber_strndup_x( LDAP_CONST char *s, ber_len_t l, void *ctx )
 {
@@ -666,11 +676,7 @@ ber_strndup_x( LDAP_CONST char *s, ber_len_t l, void *ctx )
                return NULL;
        }
 
-       len = strlen( s );
-
-       if ( len > l ) {
-               len = l;
-       }
+       len = ber_strnlen( s, l );
 
        if ( (p = ber_memalloc_x( len + 1, ctx )) == NULL ) {
                ber_errno = LBER_ERROR_MEMORY;