mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-18 18:18:06 -05:00
import tool_perror
This commit is contained in:
parent
5840b989d5
commit
b16e25bae2
2 changed files with 69 additions and 14 deletions
|
|
@ -188,6 +188,34 @@ NULL
|
|||
}
|
||||
}
|
||||
|
||||
void tool_perror(
|
||||
char *func,
|
||||
int err,
|
||||
char *extra,
|
||||
char *matched,
|
||||
char *info,
|
||||
char **refs )
|
||||
{
|
||||
fprintf( stderr, "%s: %s (%d)%s\n",
|
||||
func, ldap_err2string( err ), err, extra ? extra : "" );
|
||||
|
||||
if ( matched && *matched ) {
|
||||
fprintf( stderr, _("\tmatched DN: %s\n"), matched );
|
||||
}
|
||||
|
||||
if ( info && *info ) {
|
||||
fprintf( stderr, _("\tadditional info: %s\n"), info );
|
||||
}
|
||||
|
||||
if ( refs && *refs ) {
|
||||
int i;
|
||||
fprintf( stderr, _("\treferrals:\n") );
|
||||
for( i=0; refs[i]; i++ ) {
|
||||
fprintf( stderr, "\t\t%s\n", refs[i] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
tool_args( int argc, char **argv )
|
||||
|
|
@ -931,11 +959,14 @@ tool_bind( LDAP *ld )
|
|||
LDAPMessage *result;
|
||||
LDAPControl **ctrls;
|
||||
char msgbuf[256];
|
||||
char *matched = NULL;
|
||||
char *info = NULL;
|
||||
char **refs = NULL;
|
||||
|
||||
msgbuf[0] = 0;
|
||||
|
||||
if (( msgid = ldap_bind( ld, binddn, passwd.bv_val, authmethod )) == -1 )
|
||||
{
|
||||
msgid = ldap_bind( ld, binddn, passwd.bv_val, authmethod );
|
||||
if ( msgid == -1 ) {
|
||||
ldap_perror( ld, "ldap_bind" );
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
|
@ -945,8 +976,9 @@ tool_bind( LDAP *ld )
|
|||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
||||
if ( ldap_parse_result( ld, result, &err, NULL, NULL, NULL,
|
||||
&ctrls, 1 ) != LDAP_SUCCESS ) {
|
||||
if ( ldap_parse_result( ld, result, &err, &matched, &info, &refs,
|
||||
&ctrls, 1 ) != LDAP_SUCCESS )
|
||||
{
|
||||
ldap_perror( ld, "ldap_bind parse result" );
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
|
@ -957,9 +989,12 @@ tool_bind( LDAP *ld )
|
|||
int expire, grace, len = 0;
|
||||
LDAPPasswordPolicyError pErr = -1;
|
||||
|
||||
ctrl = ldap_find_control( LDAP_CONTROL_PASSWORDPOLICYRESPONSE, ctrls );
|
||||
ctrl = ldap_find_control( LDAP_CONTROL_PASSWORDPOLICYRESPONSE,
|
||||
ctrls );
|
||||
|
||||
if ( ctrl && ldap_parse_passwordpolicy_control( ld, ctrl,
|
||||
&expire, &grace, &pErr ) == LDAP_SUCCESS ) {
|
||||
&expire, &grace, &pErr ) == LDAP_SUCCESS )
|
||||
{
|
||||
if ( pErr != PP_noError ){
|
||||
msgbuf[0] = ';';
|
||||
msgbuf[1] = ' ';
|
||||
|
|
@ -967,22 +1002,35 @@ tool_bind( LDAP *ld )
|
|||
len = strlen( msgbuf );
|
||||
}
|
||||
if ( expire >= 0 ) {
|
||||
sprintf( msgbuf+len, " (Password expires in %d seconds)", expire );
|
||||
sprintf( msgbuf+len,
|
||||
" (Password expires in %d seconds)",
|
||||
expire );
|
||||
} else if ( grace >= 0 ) {
|
||||
sprintf( msgbuf+len, " (Password expired, %d grace logins remain)", grace );
|
||||
sprintf( msgbuf+len,
|
||||
" (Password expired, %d grace logins remain)",
|
||||
grace );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( ctrls ) {
|
||||
ldap_controls_free( ctrls );
|
||||
}
|
||||
if ( err != LDAP_SUCCESS || msgbuf[0] ) {
|
||||
fprintf( stderr, "ldap_bind: %s%s\n", ldap_err2string( err ),
|
||||
msgbuf );
|
||||
if ( err != LDAP_SUCCESS ) {
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
||||
if ( err != LDAP_SUCCESS
|
||||
|| msgbuf[0]
|
||||
|| ( matched && matched[ 0 ] )
|
||||
|| ( info && info[ 0 ] )
|
||||
|| refs )
|
||||
{
|
||||
tool_perror( "ldap_bind", err, msgbuf, matched, info, refs );
|
||||
|
||||
if( matched ) ber_memfree( matched );
|
||||
if( info ) ber_memfree( info );
|
||||
if( refs ) ber_memvfree( (void **)refs );
|
||||
|
||||
if ( err != LDAP_SUCCESS ) exit( EXIT_FAILURE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,6 +82,13 @@ void tool_unbind LDAP_P(( LDAP * ));
|
|||
void tool_destroy LDAP_P(( void ));
|
||||
void tool_server_controls LDAP_P(( LDAP *, LDAPControl *, int ));
|
||||
int tool_check_abandon LDAP_P(( LDAP *ld, int msgid ));
|
||||
void tool_perror LDAP_P((
|
||||
char *func,
|
||||
int err,
|
||||
char *extra,
|
||||
char *matched,
|
||||
char *info,
|
||||
char **refs ));
|
||||
|
||||
LDAP_END_DECL
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue