X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=libraries%2Flibldap%2Ferror.c;h=250f2b9f1adef00c3b5018396d4b91074dc84fc9;hb=ae471f78c32d7531c729aa88116b8b413cc200bf;hp=e7f0867386350b0fc72e86b8c4fd1e13948506a2;hpb=cdbbed6c3b6a4f0b69fab6e37c3a098ca5d12620;p=openldap diff --git a/libraries/libldap/error.c b/libraries/libldap/error.c index e7f0867386..250f2b9f1a 100644 --- a/libraries/libldap/error.c +++ b/libraries/libldap/error.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2006 The OpenLDAP Foundation. + * Copyright 1998-2008 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -12,9 +12,6 @@ * top-level directory of the distribution or, alternatively, at * . */ -/* Portions Copyright (C) The Internet Society (1997) - * ASN.1 fragments are from RFC 2251; see RFC for full legal notices. - */ #include "portable.h" @@ -65,7 +62,6 @@ static struct ldaperror ldap_builtin_errlist[] = { {LDAP_IS_LEAF, N_("Entry is a leaf")}, {LDAP_ALIAS_DEREF_PROBLEM, N_("Alias dereferencing problem")}, - {LDAP_PROXY_AUTHZ_FAILURE, N_("Proxy Authorization Failure")}, {LDAP_INAPPROPRIATE_AUTH, N_("Inappropriate authentication")}, {LDAP_INVALID_CREDENTIALS, N_("Invalid credentials")}, {LDAP_INSUFFICIENT_ACCESS, N_("Insufficient access")}, @@ -93,6 +89,9 @@ static struct ldaperror ldap_builtin_errlist[] = { {LDAP_ASSERTION_FAILED, N_("Assertion Failed")}, {LDAP_X_ASSERTION_FAILED, N_("Assertion Failed (X)")}, + {LDAP_PROXIED_AUTHORIZATION_DENIED, N_("Proxied Authorization Denied")}, + {LDAP_X_PROXY_AUTHZ_FAILURE, N_("Proxy Authorization Failure (X)")}, + {LDAP_SYNC_REFRESH_REQUIRED, N_("Content Sync Refresh Required")}, {LDAP_X_SYNC_REFRESH_REQUIRED, N_("Content Sync Refresh Required (X)")}, @@ -104,6 +103,10 @@ static struct ldaperror ldap_builtin_errlist[] = { {LDAP_CUP_UNSUPPORTED_SCHEME, N_("LCUP Unsupported Scheme")}, {LDAP_CUP_RELOAD_REQUIRED, N_("LCUP Reload Required")}, +#ifdef LDAP_X_TXN + {LDAP_X_TXN_SPECIFY_OKAY, N_("TXN specify okay")}, + {LDAP_X_TXN_ID_INVALID, N_("TXN ID is invalid")}, +#endif /* API ResultCodes */ {LDAP_SERVER_DOWN, N_("Can't contact LDAP server")}, @@ -279,10 +282,19 @@ ldap_parse_result( #endif /* Find the result, last msg in chain... */ lm = r->lm_chain_tail; - if ((lm->lm_msgtype == LDAP_RES_SEARCH_ENTRY) || - (lm->lm_msgtype == LDAP_RES_SEARCH_REFERENCE) || - (lm->lm_msgtype == LDAP_RES_INTERMEDIATE)) { - lm = NULL; + /* FIXME: either this is not possible (assert?) + * or it should be handled */ + if ( lm != NULL ) { + switch ( lm->lm_msgtype ) { + case LDAP_RES_SEARCH_ENTRY: + case LDAP_RES_SEARCH_REFERENCE: + case LDAP_RES_INTERMEDIATE: + lm = NULL; + break; + + default: + break; + } } if( lm == NULL ) { @@ -311,24 +323,14 @@ ldap_parse_result( ber = ber_dup( lm->lm_ber ); if ( ld->ld_version < LDAP_VERSION2 ) { -#ifdef LDAP_NULL_IS_NULL tag = ber_scanf( ber, "{iA}", &ld->ld_errno, &ld->ld_error ); -#else /* ! LDAP_NULL_IS_NULL */ - tag = ber_scanf( ber, "{ia}", - &ld->ld_errno, &ld->ld_error ); -#endif /* ! LDAP_NULL_IS_NULL */ } else { ber_len_t len; -#ifdef LDAP_NULL_IS_NULL tag = ber_scanf( ber, "{iAA" /*}*/, &ld->ld_errno, &ld->ld_matched, &ld->ld_error ); -#else /* ! LDAP_NULL_IS_NULL */ - tag = ber_scanf( ber, "{iaa" /*}*/, - &ld->ld_errno, &ld->ld_matched, &ld->ld_error ); -#endif /* ! LDAP_NULL_IS_NULL */ if( tag != LBER_ERROR ) { /* peek for referrals */ @@ -389,17 +391,13 @@ ldap_parse_result( } if ( errcode == LDAP_SUCCESS ) { if( matcheddnp != NULL ) { -#ifdef LDAP_NULL_IS_NULL if ( ld->ld_matched ) -#endif /* LDAP_NULL_IS_NULL */ { *matcheddnp = LDAP_STRDUP( ld->ld_matched ); } } if( errmsgp != NULL ) { -#ifdef LDAP_NULL_IS_NULL if ( ld->ld_error ) -#endif /* LDAP_NULL_IS_NULL */ { *errmsgp = LDAP_STRDUP( ld->ld_error ); }