From: Pierangelo Masarati Date: Fri, 18 Jun 2004 08:36:30 +0000 (+0000) Subject: improve parsing - first step X-Git-Tag: OPENDLAP_REL_ENG_2_2_MP~247 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=175ce7960dddcd81d386fd149258ab6fe80c38c6;p=openldap improve parsing - first step --- diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index 640218c7dc..207c9d5fcb 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -554,6 +554,8 @@ ldap_url_parse_ext( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) } if ( q != NULL ) { + char *next; + *q++ = '\0'; ldap_pvt_hex_unescape( q ); @@ -563,7 +565,12 @@ ldap_url_parse_ext( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) return LDAP_URL_ERR_BADURL; } - ludp->lud_port = atoi( q ); + ludp->lud_port = strtol( q, &next, 10 ); + if ( next == NULL || next[0] != '\0' ) { + LDAP_FREE( url ); + ldap_free_urldesc( ludp ); + return LDAP_URL_ERR_BADURL; + } } ldap_pvt_hex_unescape( url ); @@ -1003,9 +1010,14 @@ ldap_url_parsehosts( } } if (p != NULL) { + char *next; + *p++ = 0; ldap_pvt_hex_unescape(p); - ludp->lud_port = atoi(p); + ludp->lud_port = strtol( p, &next, 10 ); + if ( next == NULL || next[0] != '\0' ) { + return LDAP_PARAM_ERROR; + } } } ldap_pvt_hex_unescape(ludp->lud_host);