Skip to content

Commit

Permalink
Made ldap_connect/bind/unbind() use zend_parse_parameters()
Browse files Browse the repository at this point in the history
  • Loading branch information
Stig Venaas committed Aug 5, 2002
1 parent 55f735a commit dddf235
Showing 1 changed file with 28 additions and 90 deletions.
118 changes: 28 additions & 90 deletions ext/ldap/ldap.c
Expand Up @@ -336,72 +336,34 @@ PHP_MINFO_FUNCTION(ldap)
PHP_FUNCTION(ldap_connect)
{
char *host = NULL;
int hostlen;
int port = 389; /* Default port */
#ifdef HAVE_ORALDAP
char *wallet, *walletpasswd;
int walletlen, walletpasswdlen;
int authmode;
int ssl=0;
#endif
ldap_linkdata *ld;
LDAP *ldap;

switch(ZEND_NUM_ARGS()) {
case 0:
break;

case 1: {
pval **yyhost;

if (zend_get_parameters_ex(1, &yyhost) == FAILURE) {
RETURN_FALSE;
}

convert_to_string_ex(yyhost);
host = Z_STRVAL_PP(yyhost);
}
break;

case 2: {
pval **yyhost, **yyport;

if (zend_get_parameters_ex(2, &yyhost, &yyport) == FAILURE) {
RETURN_FALSE;
}

convert_to_string_ex(yyhost);
host = Z_STRVAL_PP(yyhost);
convert_to_long_ex(yyport);
port = Z_LVAL_PP(yyport);
}
break;
#ifdef HAVE_ORALDAP
if (ZEND_NUM_ARGS() == 3 || ZEND_NUM_ARGS() == 4) {
WRONG_PARAM_COUNT;
}

case 5: {
pval **yyhost, **yyport, **yywallet, **yywalletpasswd, **yyauthmode;

if (zend_get_parameters_ex(5, &yyhost, &yyport, &yywallet, &yywalletpasswd, &yyauthmode) == FAILURE) {
RETURN_FALSE;
}

convert_to_string_ex(yyhost);
convert_to_long_ex(yyport);
convert_to_string_ex(yywallet);
convert_to_string_ex(yywalletpasswd);
convert_to_long_ex(yyauthmode);
host = Z_STRVAL_PP(yyhost);
port = Z_LVAL_PP(yyport);
wallet = Z_STRVAL_PP(yywallet);
walletpasswd = Z_STRVAL_PP(yywalletpasswd);
authmode = Z_LVAL_PP(yyauthmode);
ssl = 1;
}
break;
#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|slssl", &host, &hostlen, &port, &wallet, &walletlen, &walletpasswd, &walletpasswdlen, &authmode) == FAILURE) {
RETURN_FALSE;
}

default:
WRONG_PARAM_COUNT;
break;
if (ZEND_NUM_ARGS() == 5 ) {
ssl = 1;
}
#else
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sl", &host, &hostlen, &port) == FAILURE) {
RETURN_FALSE;
}
#endif

if (LDAPG(max_links) != -1 && LDAPG(num_links) >= LDAPG(max_links)) {
php_error(E_WARNING, "%s(): Too many open links (%d)", get_active_function_name(TSRMLS_C), LDAPG(num_links));
Expand Down Expand Up @@ -472,43 +434,19 @@ static int _get_lderrno(LDAP *ldap)
Bind to LDAP directory */
PHP_FUNCTION(ldap_bind)
{
pval **link, **bind_rdn, **bind_pw;
char *ldap_bind_rdn, *ldap_bind_pw;
zval *link;
char *ldap_bind_dn = NULL, *ldap_bind_pw = NULL;
int ldap_bind_dnlen, ldap_bind_pwlen;
ldap_linkdata *ld;
int rc;

switch(ZEND_NUM_ARGS()) {
case 1: /* Anonymous Bind */
if (zend_get_parameters_ex(1, &link) == FAILURE) {
WRONG_PARAM_COUNT;
}

ldap_bind_rdn = NULL;
ldap_bind_pw = NULL;

break;

case 3 :
if (zend_get_parameters_ex(3, &link, &bind_rdn, &bind_pw) == FAILURE) {
WRONG_PARAM_COUNT;
}

convert_to_string_ex(bind_rdn);
convert_to_string_ex(bind_pw);

ldap_bind_rdn = Z_STRVAL_PP(bind_rdn);
ldap_bind_pw = Z_STRVAL_PP(bind_pw);

break;

default:
WRONG_PARAM_COUNT;
break;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|ss", &link, &ldap_bind_dn, &ldap_bind_dnlen, &ldap_bind_pw, &ldap_bind_pwlen) == FAILURE) {
RETURN_FALSE;
}

ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link);
ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link);

if ((rc = ldap_bind_s(ld->link, ldap_bind_rdn, ldap_bind_pw, LDAP_AUTH_SIMPLE)) != LDAP_SUCCESS) {
if ((rc = ldap_bind_s(ld->link, ldap_bind_dn, ldap_bind_pw, LDAP_AUTH_SIMPLE)) != LDAP_SUCCESS) {
php_error(E_WARNING, "%s(): Unable to bind to server: %s", get_active_function_name(TSRMLS_C), ldap_err2string(rc));
RETURN_FALSE;
} else {
Expand All @@ -521,16 +459,16 @@ PHP_FUNCTION(ldap_bind)
Unbind from LDAP directory */
PHP_FUNCTION(ldap_unbind)
{
pval **link;
zval *link;
ldap_linkdata *ld;

if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &link) == FAILURE) {
WRONG_PARAM_COUNT;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &link) == FAILURE) {
RETURN_FALSE;
}

ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link);
ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link);

zend_list_delete(Z_LVAL_PP(link));
zend_list_delete(Z_LVAL_P(link));
RETURN_TRUE;
}
/* }}} */
Expand Down

0 comments on commit dddf235

Please sign in to comment.