@@ -2984,16 +2984,22 @@ PHP_FUNCTION(ldap_compare)
2984
2984
/* {{{ Get the current value of various session-wide parameters */
2985
2985
PHP_FUNCTION (ldap_get_option )
2986
2986
{
2987
- zval * link , * retval ;
2987
+ zval * link = NULL , * retval ;
2988
2988
ldap_linkdata * ld ;
2989
2989
zend_long option ;
2990
+ LDAP * ldap ;
2990
2991
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 ) {
2992
2993
RETURN_THROWS ();
2993
2994
}
2994
2995
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
+ }
2997
3003
2998
3004
switch (option ) {
2999
3005
/* options with int value */
@@ -3029,7 +3035,7 @@ PHP_FUNCTION(ldap_get_option)
3029
3035
{
3030
3036
int val ;
3031
3037
3032
- if (ldap_get_option (ld -> link , option , & val )) {
3038
+ if (ldap_get_option (ldap , option , & val )) {
3033
3039
RETURN_FALSE ;
3034
3040
}
3035
3041
ZEND_TRY_ASSIGN_REF_LONG (retval , val );
@@ -3039,7 +3045,7 @@ PHP_FUNCTION(ldap_get_option)
3039
3045
{
3040
3046
struct timeval * timeout = NULL ;
3041
3047
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 )) {
3043
3049
if (timeout ) {
3044
3050
ldap_memfree (timeout );
3045
3051
}
@@ -3056,7 +3062,7 @@ PHP_FUNCTION(ldap_get_option)
3056
3062
{
3057
3063
int timeout ;
3058
3064
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 )) {
3060
3066
RETURN_FALSE ;
3061
3067
}
3062
3068
ZEND_TRY_ASSIGN_REF_LONG (retval , (timeout / 1000 ));
@@ -3067,7 +3073,7 @@ PHP_FUNCTION(ldap_get_option)
3067
3073
{
3068
3074
struct timeval * timeout = NULL ;
3069
3075
3070
- if (ldap_get_option (ld -> link , LDAP_OPT_TIMEOUT , (void * ) & timeout )) {
3076
+ if (ldap_get_option (ldap , LDAP_OPT_TIMEOUT , (void * ) & timeout )) {
3071
3077
if (timeout ) {
3072
3078
ldap_memfree (timeout );
3073
3079
}
@@ -3117,7 +3123,7 @@ PHP_FUNCTION(ldap_get_option)
3117
3123
{
3118
3124
char * val = NULL ;
3119
3125
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' ) {
3121
3127
if (val ) {
3122
3128
ldap_memfree (val );
3123
3129
}
@@ -3131,13 +3137,13 @@ PHP_FUNCTION(ldap_get_option)
3131
3137
{
3132
3138
LDAPControl * * ctrls = NULL ;
3133
3139
3134
- if (ldap_get_option (ld -> link , option , & ctrls ) || ctrls == NULL ) {
3140
+ if (ldap_get_option (ldap , option , & ctrls ) || ctrls == NULL ) {
3135
3141
if (ctrls ) {
3136
3142
ldap_memfree (ctrls );
3137
3143
}
3138
3144
RETURN_FALSE ;
3139
3145
}
3140
- _php_ldap_controls_to_array (ld -> link , ctrls , retval , 1 );
3146
+ _php_ldap_controls_to_array (ldap , ctrls , retval , 1 );
3141
3147
} break ;
3142
3148
/* options not implemented
3143
3149
case LDAP_OPT_API_INFO:
0 commit comments