diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 7a089625aa48..734409c352b4 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -4101,10 +4101,12 @@ static void php_ldap_exop(INTERNAL_FUNCTION_PARAMETERS, bool force_sync) { } if (lretdata) { - ZEND_TRY_ASSIGN_REF_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len); + if (retdata) { + ZEND_TRY_ASSIGN_REF_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len); + } ldap_memfree(lretdata->bv_val); ldap_memfree(lretdata); - } else { + } else if (retdata) { ZEND_TRY_ASSIGN_REF_EMPTY_STRING(retdata); } diff --git a/ext/ldap/tests/ldap_exop_sync_without_response_data.phpt b/ext/ldap/tests/ldap_exop_sync_without_response_data.phpt new file mode 100644 index 000000000000..111900c6a05a --- /dev/null +++ b/ext/ldap/tests/ldap_exop_sync_without_response_data.phpt @@ -0,0 +1,22 @@ +--TEST-- +ldap_exop_sync() - without the response_data argument +--EXTENSIONS-- +ldap +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +bool(true) +string(%d) "dn:%s"