From 175ce7960dddcd81d386fd149258ab6fe80c38c6 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Fri, 18 Jun 2004 08:36:30 +0000 Subject: [PATCH] improve parsing - first step --- libraries/libldap/url.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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); -- 2.39.5