readd php auth module

This commit is contained in:
Mario Fetka
2026-04-20 00:08:32 +02:00
parent 10da2ef731
commit 2a897cbab7
6 changed files with 1442 additions and 7 deletions

View File

@@ -0,0 +1,332 @@
--- /mnt/data/php_auth_nds.c 2026-04-19 21:36:13.625852545 +0000
+++ ncpfs-2.2.6/contrib/php/php_auth_nds.c 2026-04-19 21:38:56.781480418 +0000
@@ -816,47 +816,34 @@
PHP_FUNCTION (read_nds_string)
{
int res; /* fcn result code */
- const char *treen, *objectn, *attributen;
+ char *treen, *objectn, *attributen;
+ size_t treen_len, objectn_len, attributen_len;
char errstr[512];
char local_buffer [8192];
char * buffer; // returned by NWCXGetMultiStringAttributeValue
- int argc = ZEND_NUM_ARGS();
- zval **tree, **object, **attribute;
-
- if (argc != 3 || zend_get_parameters_ex(argc, &tree, &object, &attribute)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss", &treen, &treen_len,
+ &objectn, &objectn_len,
+ &attributen, &attributen_len) == FAILURE) {
+ RETURN_THROWS();
}
sprintf(errstr, "Wrong parameters values");
- if (!tree || !object || !attribute) {
- RETURN_STRING(errstr,1);
- }
-
- convert_to_string_ex(tree);
- convert_to_string_ex(object);
- convert_to_string_ex(attribute);
-
- treen = (*tree)->value.str.val;
- objectn = (*object)->value.str.val;
- attributen = (*attribute)->value.str.val;
-
if (!treen || !objectn || !attributen) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
sprintf(errstr, "failure");
res=nds_read_string_fn(errstr,treen,objectn,attributen,&buffer);
if (res) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
if (strlen(buffer) >=sizeof(local_buffer)) {
buffer[sizeof(local_buffer)-1]=0;
-
}
strcpy(local_buffer,buffer);
free(buffer);
- RETURN_STRING(local_buffer,1);
+ RETURN_STRING(local_buffer);
}
@@ -864,78 +851,53 @@
//use a servername instaed of a tree name
{
int res; /* fcn result code */
- const char *servern, *objectn, *attributen;
+ char *servern, *objectn, *attributen;
+ size_t servern_len, objectn_len, attributen_len;
char errstr[512];
char local_buffer [8192];
char * buffer; // returned by NWCXGetMultiStringAttributeValue
- int argc = ZEND_NUM_ARGS();
- zval **server, **object, **attribute;
-
- if (argc != 3 || zend_get_parameters_ex(argc, &server, &object, &attribute)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss", &servern, &servern_len,
+ &objectn, &objectn_len,
+ &attributen, &attributen_len) == FAILURE) {
+ RETURN_THROWS();
}
sprintf(errstr, "Wrong parameters values");
- if (!server || !object || !attribute) {
- RETURN_STRING(errstr,1);
- }
-
- convert_to_string_ex(server);
- convert_to_string_ex(object);
- convert_to_string_ex(attribute);
-
- servern = (*server)->value.str.val;
- objectn = (*object)->value.str.val;
- attributen = (*attribute)->value.str.val;
-
if (!servern || !objectn || !attributen) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
sprintf(errstr, "failure");
res=nds_read_string_fn2(errstr,servern,objectn,attributen,&buffer);
if (res) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
if (strlen(buffer) >=sizeof(local_buffer)) {
buffer[sizeof(local_buffer)-1]=0;
-
}
strcpy(local_buffer,buffer);
free(buffer);
- RETURN_STRING(local_buffer,1);
+ RETURN_STRING(local_buffer);
}
PHP_FUNCTION (read_nds_int)
{
int res; /* fcn result code */
- const char *treen, *objectn, *attributen;
+ char *treen, *objectn, *attributen;
+ size_t treen_len, objectn_len, attributen_len;
char errstr[512];
- int argc = ZEND_NUM_ARGS();
- zval **tree, **object, **attribute;
-
- if (argc != 3 || zend_get_parameters_ex(argc, &tree, &object, &attribute)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss", &treen, &treen_len,
+ &objectn, &objectn_len,
+ &attributen, &attributen_len) == FAILURE) {
+ RETURN_THROWS();
}
sprintf(errstr, "Wrong parameters values");
- if (!tree || !object || !attribute) {
- RETURN_STRING(errstr,1);
- }
-
- convert_to_string_ex(tree);
- convert_to_string_ex(object);
- convert_to_string_ex(attribute);
-
- treen = (*tree)->value.str.val;
- objectn = (*object)->value.str.val;
- attributen = (*attribute)->value.str.val;
-
if (!treen || !objectn || !attributen) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
sprintf(errstr, "failure");
{
@@ -945,7 +907,7 @@
sprintf(errstr, "%d", result);
}
}
- RETURN_STRING(errstr, 1);
+ RETURN_STRING(errstr);
}
@@ -953,31 +915,19 @@
// use a servername instead of a tree name as first argument
{
int res; /* fcn result code */
- const char *servern, *objectn, *attributen;
+ char *servern, *objectn, *attributen;
+ size_t servern_len, objectn_len, attributen_len;
char errstr[512];
- int argc = ZEND_NUM_ARGS();
- zval **server, **object, **attribute;
-
- if (argc != 3 || zend_get_parameters_ex(argc, &server, &object, &attribute)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss", &servern, &servern_len,
+ &objectn, &objectn_len,
+ &attributen, &attributen_len) == FAILURE) {
+ RETURN_THROWS();
}
sprintf(errstr, "Wrong parameters values");
- if (!server || !object || !attribute) {
- RETURN_STRING(errstr,1);
- }
-
- convert_to_string_ex(server);
- convert_to_string_ex(object);
- convert_to_string_ex(attribute);
-
- servern = (*server)->value.str.val;
- objectn = (*object)->value.str.val;
- attributen = (*attribute)->value.str.val;
-
if (!servern || !objectn || !attributen) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
sprintf(errstr, "failure");
{
@@ -988,37 +938,28 @@
sprintf(errstr, "%d", result);
}
}
- RETURN_STRING(errstr, 1);
+ RETURN_STRING(errstr);
}
PHP_FUNCTION(auth_bindery)
{
int res; /* fcn result code */
- const char *servern, *usern, *sent_pw, *groupn;
+ char *servern, *usern, *sent_pw, *groupn;
+ size_t servern_len, usern_len, sent_pw_len, groupn_len;
char errstr[512];
- int argc = ZEND_NUM_ARGS();
- zval **server, **user, **password, ** group;
-
- if (argc != 4 || zend_get_parameters_ex(argc, &server, &user, &password, &group)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ssss", &servern, &servern_len,
+ &usern, &usern_len,
+ &sent_pw, &sent_pw_len,
+ &groupn, &groupn_len) == FAILURE) {
+ RETURN_THROWS();
}
- convert_to_string_ex(server);
- convert_to_string_ex(user);
- convert_to_string_ex(password);
- convert_to_string_ex(group);
-
- servern = (*server)->value.str.val;
- usern = (*user)->value.str.val;
- sent_pw = (*password)->value.str.val;
- groupn = (*group)->value.str.val;
-
/* do they know the magic word? */
sprintf(errstr, "failure");
res = bindery_auth(errstr, servern, usern, sent_pw, groupn );
if (res) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
RETURN_FALSE;
}
@@ -1026,64 +967,46 @@
PHP_FUNCTION(auth_tree)
{
int res; /* fcn result code */
- const char *servern, *ctxs,*usern, *sent_pw, *groupn;
+ char *servern, *ctxs,*usern, *sent_pw, *groupn;
+ size_t servern_len, ctxs_len, usern_len, sent_pw_len, groupn_len;
char errstr[512];
char fqdn[MAX_DN_CHARS+5]; // to get 'DN=' plus the FQDN used
- int argc = ZEND_NUM_ARGS();
- zval **server, **user, **contexts, **password, **group;
- if (argc != 5 || zend_get_parameters_ex(argc, &server, &user, &contexts,&password, &group)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sssss", &servern, &servern_len,
+ &usern, &usern_len,
+ &ctxs, &ctxs_len,
+ &sent_pw, &sent_pw_len,
+ &groupn, &groupn_len) == FAILURE) {
+ RETURN_THROWS();
}
- convert_to_string_ex(server);
- convert_to_string_ex(user);
- convert_to_string_ex(contexts);
- convert_to_string_ex(password);
- convert_to_string_ex(group);
-
- servern = (*server)->value.str.val;
- usern = (*user)->value.str.val;
- ctxs = (*contexts)->value.str.val ;
- sent_pw = (*password)->value.str.val;
- groupn = (*group)->value.str.val;
-
/* do they know the magic word? */
sprintf(errstr, "failure");
strcpy(fqdn, "DN=");
res = tree_auth_fn(errstr, servern, usern, ctxs,sent_pw, groupn, fqdn + 3);
if (res) {
- RETURN_STRING(errstr, 1);
+ RETURN_STRING(errstr);
}
- RETURN_STRING(fqdn, 1);
+ RETURN_STRING(fqdn);
}
PHP_FUNCTION(auth_nds)
{
int res; /* fcn result code */
- const char *servern, *usern, *sent_pw, *groupn;
+ char *servern, *usern, *sent_pw, *groupn;
+ size_t servern_len, usern_len, sent_pw_len, groupn_len;
char errstr[512];
- int argc = ZEND_NUM_ARGS();
- zval **server, **user, **password, **group;
-
- if (argc != 4 || zend_get_parameters_ex(argc, &server, &user, &password, &group)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ssss", &servern, &servern_len,
+ &usern, &usern_len,
+ &sent_pw, &sent_pw_len,
+ &groupn, &groupn_len) == FAILURE) {
+ RETURN_THROWS();
}
- convert_to_string_ex(server);
- convert_to_string_ex(user);
- convert_to_string_ex(password);
- convert_to_string_ex(group);
-
- servern = (*server)->value.str.val;
- usern = (*user)->value.str.val;
- sent_pw = (*password)->value.str.val;
- groupn = (*group)->value.str.val;
-
/* do they know the magic word? */
sprintf(errstr, "failure");
res = nds_auth_fn(errstr, servern, usern, sent_pw, groupn);
if (res) {
- RETURN_STRING(errstr,1);
+ RETURN_STRING(errstr);
}
RETURN_FALSE;
}