@@ -2984,16 +2984,22 @@ PHP_FUNCTION(ldap_compare)
29842984/* {{{ Get the current value of various session-wide parameters */
29852985PHP_FUNCTION (ldap_get_option )
29862986{
2987- zval * link , * retval ;
2987+ zval * link = NULL , * retval ;
29882988 ldap_linkdata * ld ;
29892989 zend_long option ;
2990+ LDAP * ldap ;
29902991
2991- if (zend_parse_parameters (ZEND_NUM_ARGS (), "Olz " , & link , ldap_link_ce , & option , & retval ) != SUCCESS ) {
2992+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "O!lz " , & link , ldap_link_ce , & option , & retval ) != SUCCESS ) {
29922993 RETURN_THROWS ();
29932994 }
29942995
2995- ld = Z_LDAP_LINK_P (link );
2996- VERIFY_LDAP_LINK_CONNECTED (ld );
2996+ if (!link ) {
2997+ ldap = NULL ;
2998+ } else {
2999+ ld = Z_LDAP_LINK_P (link );
3000+ VERIFY_LDAP_LINK_CONNECTED (ld );
3001+ ldap = ld -> link ;
3002+ }
29973003
29983004 switch (option ) {
29993005 /* options with int value */
@@ -3029,7 +3035,7 @@ PHP_FUNCTION(ldap_get_option)
30293035 {
30303036 int val ;
30313037
3032- if (ldap_get_option (ld -> link , option , & val )) {
3038+ if (ldap_get_option (ldap , option , & val )) {
30333039 RETURN_FALSE ;
30343040 }
30353041 ZEND_TRY_ASSIGN_REF_LONG (retval , val );
@@ -3039,7 +3045,7 @@ PHP_FUNCTION(ldap_get_option)
30393045 {
30403046 struct timeval * timeout = NULL ;
30413047
3042- if (ldap_get_option (ld -> link , LDAP_OPT_NETWORK_TIMEOUT , (void * ) & timeout )) {
3048+ if (ldap_get_option (ldap , LDAP_OPT_NETWORK_TIMEOUT , (void * ) & timeout )) {
30433049 if (timeout ) {
30443050 ldap_memfree (timeout );
30453051 }
@@ -3056,7 +3062,7 @@ PHP_FUNCTION(ldap_get_option)
30563062 {
30573063 int timeout ;
30583064
3059- if (ldap_get_option (ld -> link , LDAP_X_OPT_CONNECT_TIMEOUT , & timeout )) {
3065+ if (ldap_get_option (ldap , LDAP_X_OPT_CONNECT_TIMEOUT , & timeout )) {
30603066 RETURN_FALSE ;
30613067 }
30623068 ZEND_TRY_ASSIGN_REF_LONG (retval , (timeout / 1000 ));
@@ -3067,7 +3073,7 @@ PHP_FUNCTION(ldap_get_option)
30673073 {
30683074 struct timeval * timeout = NULL ;
30693075
3070- if (ldap_get_option (ld -> link , LDAP_OPT_TIMEOUT , (void * ) & timeout )) {
3076+ if (ldap_get_option (ldap , LDAP_OPT_TIMEOUT , (void * ) & timeout )) {
30713077 if (timeout ) {
30723078 ldap_memfree (timeout );
30733079 }
@@ -3117,7 +3123,7 @@ PHP_FUNCTION(ldap_get_option)
31173123 {
31183124 char * val = NULL ;
31193125
3120- if (ldap_get_option (ld -> link , option , & val ) || val == NULL || * val == '\0' ) {
3126+ if (ldap_get_option (ldap , option , & val ) || val == NULL || * val == '\0' ) {
31213127 if (val ) {
31223128 ldap_memfree (val );
31233129 }
@@ -3131,13 +3137,13 @@ PHP_FUNCTION(ldap_get_option)
31313137 {
31323138 LDAPControl * * ctrls = NULL ;
31333139
3134- if (ldap_get_option (ld -> link , option , & ctrls ) || ctrls == NULL ) {
3140+ if (ldap_get_option (ldap , option , & ctrls ) || ctrls == NULL ) {
31353141 if (ctrls ) {
31363142 ldap_memfree (ctrls );
31373143 }
31383144 RETURN_FALSE ;
31393145 }
3140- _php_ldap_controls_to_array (ld -> link , ctrls , retval , 1 );
3146+ _php_ldap_controls_to_array (ldap , ctrls , retval , 1 );
31413147 } break ;
31423148/* options not implemented
31433149 case LDAP_OPT_API_INFO:
0 commit comments