From fb1933f5678a73bf83b20833fd26b58834045bfe Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Fri, 22 May 2020 23:45:40 +0000 Subject: [PATCH] Issue#7530 - Test for ERANGE when using 6 form gethostbyname_r --- libraries/libldap/util-int.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/libldap/util-int.c b/libraries/libldap/util-int.c index 50c802727f..b2c76defa3 100644 --- a/libraries/libldap/util-int.c +++ b/libraries/libldap/util-int.c @@ -445,8 +445,12 @@ int ldap_pvt_gethostbyname_a( *result=gethostbyname_r( name, resbuf, *buf, buflen, herrno_ptr ); r = (*result == NULL) ? -1 : 0; #else - r = gethostbyname_r( name, resbuf, *buf, - buflen, result, herrno_ptr ); + while((r = gethostbyname_r( name, resbuf, *buf, buflen, result, herrno_ptr )) == ERANGE) { + /* Increase the buffer */ + buflen*=2; + if (safe_realloc(buf, buflen) == NULL) + return -1; + } #endif Debug2( LDAP_DEBUG_TRACE, "ldap_pvt_gethostbyname_a: host=%s, r=%d\n",