[pecl-authentication-krb5] master: Merge branch 'master' into feature/minimum-php70

From: Date: Mon, 08 Jun 2026 15:49:49 +0000
Subject: [pecl-authentication-krb5] master: Merge branch 'master' into feature/minimum-php70
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-28562@lists.php.net to get a copy of this message
Author: Tim van Dijen (tvdijen) Committer: GitHub (web-flow) Pusher: mbechler Date: 2024-07-08T09:27:43+02:00 Commit: https://github.com/php/pecl-authentication-krb5/commit/7f7e5ab87380e8f982e985200668f58b1f169cee Raw diff: https://github.com/php/pecl-authentication-krb5/commit/7f7e5ab87380e8f982e985200668f58b1f169cee.diff Merge branch 'master' into feature/minimum-php70 Changed paths: M channel.c M negotiate_auth.c Diff: diff --git a/channel.c b/channel.c index eab9faa..7b7b11c 100644 --- a/channel.c +++ b/channel.c @@ -217,8 +217,12 @@ PHP_METHOD(GSSAPIChannelBinding, setApplicationData) } else { zend_string *data = zval_get_string(zdata); object->data.application_data.length = data->len; + if ( object->data.application_data.value ) { + efree(object->data.application_data.value); + } object->data.application_data.value = emalloc(data->len); memcpy(object->data.application_data.value, data->val, data->len); + zend_string_release(data); } } /* }}} */ @@ -247,8 +251,12 @@ PHP_METHOD(GSSAPIChannelBinding, setInitiatorAddress) } else { zend_string *data = zval_get_string(zdata); object->data.initiator_address.length = data->len; + if ( object->data.initiator_address.value ) { + efree(object->data.initiator_address.value); + } object->data.initiator_address.value = emalloc(data->len); memcpy(object->data.initiator_address.value, data->val, data->len); + zend_string_release(data); } } /* }}} */ @@ -277,8 +285,12 @@ PHP_METHOD(GSSAPIChannelBinding, setAcceptorAddress) } else { zend_string *data = zval_get_string(zdata); object->data.acceptor_address.length = data->len; + if ( object->data.acceptor_address.value ) { + efree(object->data.acceptor_address.value); + } object->data.acceptor_address.value = emalloc(data->len); memcpy(object->data.acceptor_address.value, data->val, data->len); + zend_string_release(data); } } /* }}} */ diff --git a/negotiate_auth.c b/negotiate_auth.c index 61e270e..080bbe4 100644 --- a/negotiate_auth.c +++ b/negotiate_auth.c @@ -38,7 +38,7 @@ typedef struct _krb5_negotiate_auth_object { gss_name_t authed_user; gss_cred_id_t delegated; zend_bool channel_bound; - zval* chan_bindings; + zval chan_bindings; #ifdef HAVE_GSS_ACQUIRE_CRED_FROM gss_key_value_set_desc cred_store; #endif @@ -88,9 +88,8 @@ static void php_krb5_negotiate_auth_object_free_data(krb5_negotiate_auth_object* free(object->servname); } - if ( object->chan_bindings ) { - Z_DELREF_P(object->chan_bindings); - object->chan_bindings = NULL; + if ( Z_TYPE(object->chan_bindings) != IS_NULL ) { + zval_ptr_dtor(&object->chan_bindings); } if ( object->delegated != GSS_C_NO_CREDENTIAL ) { @@ -124,7 +123,6 @@ static void setup_negotiate_auth(krb5_negotiate_auth_object *object TSRMLS_DC) { object->authed_user = GSS_C_NO_NAME; object->servname = GSS_C_NO_NAME; object->delegated = GSS_C_NO_CREDENTIAL; - object->chan_bindings = NULL; } /* {{{ */ @@ -137,6 +135,7 @@ zend_object *php_krb5_negotiate_auth_object_new(zend_class_entry *ce TSRMLS_DC) zend_object_std_init(&object->std, ce TSRMLS_CC); object_properties_init(&object->std, ce); + ZVAL_NULL(&object->chan_bindings); object->std.handlers = &krb5_negotiate_auth_handlers; return &object->std; } @@ -191,8 +190,7 @@ PHP_METHOD(KRB5NegotiateAuth, __construct) #endif if (zchannel != NULL) { - Z_ADDREF_P(zchannel); - object->chan_bindings = zchannel; + ZVAL_OBJ_COPY(&object->chan_bindings, Z_OBJ_P(zchannel)); } @@ -356,8 +354,8 @@ PHP_METHOD(KRB5NegotiateAuth, doAuthentication) input_token.length = token->len; input_token.value = token->val; - if ( object->chan_bindings != NULL ) { - krb5_gss_channel_object *zchannelobj = KRB5_GSS_CHANNEL(object->chan_bindings); + if ( Z_TYPE(object->chan_bindings) != IS_NULL ) { + krb5_gss_channel_object *zchannelobj = KRB5_GSS_CHANNEL(&object->chan_bindings); chan_bindings = &zchannelobj->data; }

« previous php.pecl.cvs (#28562) next »