[prev in list] [next in list] [prev in thread] [next in thread]
List: pecl-cvs
Subject: [PECL-CVS] =?utf-8?q?svn:_/pecl/krb5/trunk/_kadm.c_kadm5=5Fprincipal.c?=
From: Moritz_Bechler <mbechler () php ! net>
Date: 2015-09-22 7:49:27
Message-ID: svn-mbechler-1442908167-337893-1364418591 () svn ! php ! net
[Download RAW message or body]
mbechler Tue, 22 Sep 2015 07:49:27 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=337893
Log:
Add option to prevent principal load on initialization.
Changed paths:
U pecl/krb5/trunk/kadm.c
U pecl/krb5/trunk/kadm5_principal.c
Modified: pecl/krb5/trunk/kadm.c
===================================================================
--- pecl/krb5/trunk/kadm.c 2015-09-21 16:31:39 UTC (rev 337892)
+++ pecl/krb5/trunk/kadm.c 2015-09-22 07:49:27 UTC (rev 337893)
@@ -36,6 +36,7 @@
ZEND_BEGIN_ARG_INFO_EX(arginfo_KADM5_getPrincipal, 0, 0, 1)
ZEND_ARG_INFO(0, principal)
+ ZEND_ARG_INFO(0, noload)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_KADM5_getPrincipals, 0, 0, 0)
@@ -286,16 +287,17 @@
}
/* }}} */
-/* {{{ proto KADM5Principal KADM5::getPrinicipal(string $principal)
+/* {{{ proto KADM5Principal KADM5::getPrinicipal(string $principal [, boolean \
$noload ]) Fetch a principal entry by name */
PHP_METHOD(KADM5, getPrincipal)
{
- zval *dummy_retval, *ctor;
- zval *args[2];
+ zval *dummy_retval, *ctor, *znoload;
+ zval *args[3];
zval *sprinc = NULL;
+ zend_bool noload = FALSE;
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &sprinc) == FAILURE) {
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &sprinc, &noload) == \
FAILURE) { RETURN_FALSE;
}
@@ -303,13 +305,16 @@
MAKE_STD_ZVAL(ctor);
ZVAL_STRING(ctor, "__construct", 1);
+ MAKE_STD_ZVAL(znoload);
+ ZVAL_BOOL(znoload, noload);
args[0] = sprinc;
args[1] = getThis();
+ args[2] = znoload;
MAKE_STD_ZVAL(dummy_retval);
if(call_user_function(&krb5_ce_kadm5_principal->function_table,
- &return_value, ctor, dummy_retval, 2,
+ &return_value, ctor, dummy_retval, 3,
args TSRMLS_CC) == FAILURE) {
zval_dtor(ctor);
zval_dtor(dummy_retval);
@@ -318,6 +323,7 @@
zval_ptr_dtor(&ctor);
zval_ptr_dtor(&dummy_retval);
+ zval_ptr_dtor(&znoload);
} /* }}} */
/* {{{ proto array KADM5::getPrinicipals([string $filter])
Modified: pecl/krb5/trunk/kadm5_principal.c
===================================================================
--- pecl/krb5/trunk/kadm5_principal.c 2015-09-21 16:31:39 UTC (rev 337892)
+++ pecl/krb5/trunk/kadm5_principal.c 2015-09-22 07:49:27 UTC (rev 337893)
@@ -29,6 +29,7 @@
ZEND_BEGIN_ARG_INFO_EX(arginfo_KADM5Principal__construct, 0, 0, 1)
ZEND_ARG_INFO(0, principal)
ZEND_ARG_OBJ_INFO(0, connection, KADM5, 0)
+ ZEND_ARG_INFO(0, noload)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_KADM5Principal_changePassword, 0, 0, 1)
@@ -143,7 +144,7 @@
return retval;
}
-/* {{{ proto KADM5Principal KADM5Principal::__construct(string $principal [, KADM5 \
$connection ]) +/* {{{ proto KADM5Principal KADM5Principal::__construct(string \
$principal [, KADM5 $connection [, boolean $noload] ])
*/
PHP_METHOD(KADM5Principal, __construct)
{
@@ -151,11 +152,12 @@
char *sprinc = NULL;
int sprinc_len;
+ zend_bool noload = FALSE;
zval *obj = NULL;
zval *dummy_retval, *func;
KRB5_SET_ERROR_HANDLING(EH_THROW);
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|O", &sprinc, &sprinc_len, \
&obj, krb5_ce_kadm5) == FAILURE) { + if(zend_parse_parameters(ZEND_NUM_ARGS() \
TSRMLS_CC, "s|Ob", &sprinc, &sprinc_len, &obj, krb5_ce_kadm5, &noload) == FAILURE) { \
RETURN_NULL(); }
KRB5_SET_ERROR_HANDLING(EH_NORMAL);
@@ -165,20 +167,22 @@
if(obj && Z_TYPE_P(obj) == IS_OBJECT) {
zend_update_property(krb5_ce_kadm5_principal, getThis(), "connection", \
sizeof("connection"), obj TSRMLS_CC);
- MAKE_STD_ZVAL(func);
- ZVAL_STRING(func, "load", 1);
- MAKE_STD_ZVAL(dummy_retval);
- if(call_user_function(&krb5_ce_kadm5_principal->function_table,
- &getThis(), func, dummy_retval, 0,
- NULL TSRMLS_CC) == FAILURE) {
+ if ( noload != TRUE ) {
+ MAKE_STD_ZVAL(func);
+ ZVAL_STRING(func, "load", 1);
+ MAKE_STD_ZVAL(dummy_retval);
+ if(call_user_function(&krb5_ce_kadm5_principal->function_table,
+ &getThis(), func, dummy_retval, 0,
+ NULL TSRMLS_CC) == FAILURE) {
+ zval_ptr_dtor(&func);
+ zval_ptr_dtor(&dummy_retval);
+ zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 \
TSRMLS_CC); + return;
+ }
+
zval_ptr_dtor(&func);
zval_ptr_dtor(&dummy_retval);
- zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 \
TSRMLS_CC);
- return;
}
-
- zval_ptr_dtor(&func);
- zval_ptr_dtor(&dummy_retval);
}
}
/* }}} */
@@ -244,6 +248,8 @@
if (zend_parse_parameters_none() == FAILURE) {
return;
}
+
+
connobj = zend_read_property(krb5_ce_kadm5_principal, getThis(), "connection",
sizeof("connection"),1 TSRMLS_CC);
@@ -331,6 +337,12 @@
if (zend_parse_parameters_none() == FAILURE) {
return;
}
+
+ if ( ! obj->loaded ) {
+ zend_throw_exception(NULL, "Object is not loaded", 0 TSRMLS_CC);
+ return;
+ }
+
connobj = zend_read_property(krb5_ce_kadm5_principal, getThis(), "connection",
sizeof("connection"),1 TSRMLS_CC);
@@ -340,6 +352,7 @@
return;
}
+
retval = kadm5_delete_principal(kadm5->handle, obj->data.principal);
if(retval != KADM5_OK) {
zend_throw_exception(NULL, krb5_get_error_message(kadm5->ctx, (int)retval), \
(int)retval TSRMLS_CC); @@ -363,7 +376,15 @@
int dst_name_len, dst_pw_len;
krb5_principal dst_princ;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &dst_name, \
&dst_name_len, + &dst_pw, &dst_pw_len) == FAILURE) {
+ RETURN_FALSE;
+ }
+ if ( ! obj->loaded ) {
+ zend_throw_exception(NULL, "Object is not loaded", 0 TSRMLS_CC);
+ return;
+ }
connobj = zend_read_property(krb5_ce_kadm5_principal, getThis(), "connection",
sizeof("connection"),1 TSRMLS_CC);
@@ -374,10 +395,6 @@
return;
}
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &dst_name, \
&dst_name_len,
- &dst_pw, &dst_pw_len) == FAILURE) {
- RETURN_FALSE;
- }
krb5_parse_name(kadm5->ctx, dst_name, &dst_princ);
retval = kadm5_rename_principal(kadm5->handle, obj->data.principal, dst_princ);
@@ -418,6 +435,8 @@
if (zend_parse_parameters_none() == FAILURE) {
return;
}
+
+
kadm5 = (krb5_kadm5_object*)zend_object_store_get_object(connobj TSRMLS_CC);
if(!kadm5) {
zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
@@ -427,14 +446,27 @@
array_init(return_value);
char *tstring;
- krb5_unparse_name(kadm5->ctx, obj->data.principal, &tstring);
- add_assoc_string(return_value, "princname", tstring, 1);
+ if ( obj->data.principal != NULL ) {
+ krb5_unparse_name(kadm5->ctx, obj->data.principal, &tstring);
+ add_assoc_string(return_value, "princname", tstring, 1);
+ } else {
+ zval *val;
+ val = zend_read_property(krb5_ce_kadm5_principal, getThis(), "princname",
+ sizeof("princname"),1 TSRMLS_CC);
+ convert_to_string(val);
+ add_assoc_string(return_value, "princname", Z_STRVAL_P(val), 1);
+ zval_ptr_dtor(&val);
+ }
add_assoc_long(return_value, "princ_expire_time", obj->data.princ_expire_time);
add_assoc_long(return_value, "last_pwd_change", obj->data.last_pwd_change);
add_assoc_long(return_value, "pw_expiration", obj->data.pw_expiration);
add_assoc_long(return_value, "max_life", obj->data.max_life);
- krb5_unparse_name(kadm5->ctx, obj->data.mod_name, &tstring);
- add_assoc_string(return_value, "mod_name", tstring, 1);
+
+ if ( obj->data.mod_name ) {
+ krb5_unparse_name(kadm5->ctx, obj->data.mod_name, &tstring);
+ add_assoc_string(return_value, "mod_name", tstring, 1);
+ }
+
add_assoc_long(return_value, "mod_date", obj->data.mod_date);
add_assoc_long(return_value, "attributes", obj->data.attributes);
add_assoc_long(return_value, "kvno", obj->data.kvno);
@@ -471,12 +503,9 @@
free(princname);
} else {
zval *val;
-
val = zend_read_property(krb5_ce_kadm5_principal, getThis(), "princname",
sizeof("princname"),1 TSRMLS_CC);
-
convert_to_string(val);
-
ZVAL_STRING(return_value, Z_STRVAL_P(val), 1);
zval_ptr_dtor(&val);
}
@@ -492,6 +521,7 @@
if (zend_parse_parameters_none() == FAILURE) {
return;
}
+
RETURN_LONG(obj->data.princ_expire_time);
}
/* }}} */
--
PECL CVS Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic