Diff for /libraries/libldap/sasl.c between versions 1.1 and 1.5

version 1.1, 1999/06/28 20:19:21 version 1.5, 1999/12/17 02:27:17
Line 1 Line 1
   /* $OpenLDAP: pkg/ldap/libraries/libldap/sasl.c,v 1.4 1999/12/12 04:02:03 kdz Exp $ */
 /*  /*
  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.   * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file   * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
Line 69  ldap_sasl_bind( Line 70  ldap_sasl_bind(
                 return ld->ld_errno;                  return ld->ld_errno;
         }          }
   
         if( mechanism != LDAP_SASL_SIMPLE          if( mechanism == LDAP_SASL_SIMPLE ) {
                 && ld->ld_version < LDAP_VERSION3)                  if( dn == NULL && cred != NULL ) {
         {                          /* use default binddn */
                           dn = ld->ld_defbinddn;
                   }
   
           } else if( ld->ld_version < LDAP_VERSION3 ) {
                 ld->ld_errno = LDAP_NOT_SUPPORTED;                  ld->ld_errno = LDAP_NOT_SUPPORTED;
                 return ld->ld_errno;                  return ld->ld_errno;
         }          }
   
         if ( dn == NULL )          if ( dn == NULL ) {
                 dn = "";                  dn = "";
           }
   
         /* create a message to send */          /* create a message to send */
         if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) {          if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) {
Line 251  ldap_parse_sasl_bind_result( Line 257  ldap_parse_sasl_bind_result(
                 return LDAP_PARAM_ERROR;                  return LDAP_PARAM_ERROR;
         }          }
   
         if(servercredp != NULL) {          if( servercredp != NULL ) {
                 if( ld->ld_version < LDAP_VERSION2 ) {                  if( ld->ld_version < LDAP_VERSION2 ) {
                         return LDAP_NOT_SUPPORTED;                          return LDAP_NOT_SUPPORTED;
                 }                  }
                 *servercredp = NULL;                  *servercredp = NULL;
         }          }
   
         if( res->lm_msgtype == LDAP_RES_BIND ) {          if( res->lm_msgtype != LDAP_RES_BIND ) {
                 ld->ld_errno = LDAP_PARAM_ERROR;                  ld->ld_errno = LDAP_PARAM_ERROR;
                 return ld->ld_errno;                  return ld->ld_errno;
         }          }
   
         errcode = LDAP_SUCCESS;  
         scred = NULL;          scred = NULL;
   
         if ( ld->ld_error ) {          if ( ld->ld_error ) {
Line 279  ldap_parse_sasl_bind_result( Line 284  ldap_parse_sasl_bind_result(
   
         ber = ber_dup( res->lm_ber );          ber = ber_dup( res->lm_ber );
   
           if( ber == NULL ) {
                   ld->ld_errno = LDAP_NO_MEMORY;
                   return ld->ld_errno;
           }
   
         if ( ld->ld_version < LDAP_VERSION2 ) {          if ( ld->ld_version < LDAP_VERSION2 ) {
                 tag = ber_scanf( ber, "{ia}",                  tag = ber_scanf( ber, "{ia}",
                         &errcode, &ld->ld_error );                          &errcode, &ld->ld_error );
   
                   if( tag == LBER_ERROR ) {
                           ber_free( ber, 0 );
                           ld->ld_errno = LDAP_DECODING_ERROR;
                           return ld->ld_errno;
                   }
   
         } else {          } else {
                 ber_len_t len;                  ber_len_t len;
   
                 tag = ber_scanf( ber, "{iaa" /*}*/,                  tag = ber_scanf( ber, "{iaa" /*}*/,
                         &errcode, &ld->ld_matched, &ld->ld_error );                          &errcode, &ld->ld_matched, &ld->ld_error );
   
                 if( tag != LBER_ERROR ) {                  if( tag == LBER_ERROR ) {
                         tag = ber_peek_tag(ber, &len);                          ber_free( ber, 0 );
                           ld->ld_errno = LDAP_DECODING_ERROR;
                           return ld->ld_errno;
                 }                  }
   
                   tag = ber_peek_tag(ber, &len);
   
                 if( tag == LDAP_TAG_REFERRAL ) {                  if( tag == LDAP_TAG_REFERRAL ) {
                         /* skip 'em */                          /* skip 'em */
                         tag = ber_scanf( ber, "x" );                          if( ber_scanf( ber, "x" ) == LBER_ERROR ) {
                                   ber_free( ber, 0 );
                         if( tag != LBER_ERROR ) {                                  ld->ld_errno = LDAP_DECODING_ERROR;
                                 tag = ber_peek_tag(ber, &len);                                  return ld->ld_errno;
                         }                          }
   
                           tag = ber_peek_tag(ber, &len);
                 }                  }
   
                 /* need to clean out misc items */  
                 if( tag == LDAP_TAG_SASL_RES_CREDS ) {                  if( tag == LDAP_TAG_SASL_RES_CREDS ) {
                         tag = ber_scanf( ber, "O", &scred );                          if( ber_scanf( ber, "O", &scred ) == LBER_ERROR ) {
                                   ber_free( ber, 0 );
                                   ld->ld_errno = LDAP_DECODING_ERROR;
                                   return ld->ld_errno;
                           }
                 }                  }
         }          }
   
         if ( tag == LBER_ERROR ) {          ber_free( ber, 0 );
                 errcode = LDAP_DECODING_ERROR;  
         }  
   
         if( ber != NULL ) {  
                 ber_free( ber, 0 );  
         }  
   
         /* return */          if ( servercredp != NULL ) {
         if ( errcode == LDAP_SUCCESS && servercredp != NULL ) {  
                 *servercredp = scred;                  *servercredp = scred;
   
         } else if ( scred != NULL ) {          } else if ( scred != NULL ) {
                 ber_bvfree( scred );                  ber_bvfree( scred );
         }          }
   
           ld->ld_errno = errcode;
   
         if ( freeit ) {          if ( freeit ) {
                 ldap_msgfree( res );                  ldap_msgfree( res );
         }          }
   
         ld->ld_errno = errcode;  
         return( ld->ld_errno );          return( ld->ld_errno );
 }  }

Removed from v.1.1  
changed lines
  Added in v.1.5


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org