From: Kurt Zeilenga Date: Sun, 27 Jun 2004 02:23:23 +0000 (+0000) Subject: Better syntax checking X-Git-Tag: OPENLDAP_REL_ENG_2_2_15~46 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e06d5bba5c333c10ff0595055c24ca8b4cd1da54;p=openldap Better syntax checking --- diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index 7af36fbaad..c6c322e2cb 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -537,6 +537,8 @@ ldap_url_parse_ext( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) } if ( q != NULL ) { + char *next; + *q++ = '\0'; ldap_pvt_hex_unescape( q ); @@ -546,7 +548,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 ); @@ -986,9 +993,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);