Diff for /clients/tools/common.c between versions 1.146 and 1.147

version 1.146, 2011/01/04 23:42:40 version 1.147, 2011/01/05 21:54:20
Line 1 Line 1
 /* common.c - common routines for the ldap client tools */  /* common.c - common routines for the ldap client tools */
 /* $OpenLDAP: pkg/ldap/clients/tools/common.c,v 1.145 2011/01/04 22:17:42 ando Exp $ */  /* $OpenLDAP: pkg/ldap/clients/tools/common.c,v 1.146 2011/01/04 23:42:40 kurt Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1998-2011 The OpenLDAP Foundation.   * Copyright 1998-2011 The OpenLDAP Foundation.
Line 120  static int chainingContinuation = -1; Line 120  static int chainingContinuation = -1;
 #endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */  #endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
 #ifdef LDAP_CONTROL_X_SESSION_TRACKING  #ifdef LDAP_CONTROL_X_SESSION_TRACKING
 static int      sessionTracking = 0;  static int      sessionTracking = 0;
   static char     *sessionTrackingName;
 struct berval   stValue;  struct berval   stValue;
 #endif /* LDAP_CONTROL_X_SESSION_TRACKING */  #endif /* LDAP_CONTROL_X_SESSION_TRACKING */
 ber_int_t vlvPos;  ber_int_t vlvPos;
Line 207  st_value( LDAP *ld, struct berval *value Line 208  st_value( LDAP *ld, struct berval *value
                 }                  }
         }          }
   
           if ( sessionTrackingName != NULL ) {
                   ber_str2bv( sessionTrackingName , 0, 0, &id );
           } else
 #ifdef HAVE_CYRUS_SASL  #ifdef HAVE_CYRUS_SASL
         if ( sasl_authz_id != NULL ) {          if ( sasl_authz_id != NULL ) {
                 ber_str2bv( sasl_authz_id, 0, 0, &id );                  ber_str2bv( sasl_authz_id, 0, 0, &id );
Line 277  tool_destroy( void ) Line 281  tool_destroy( void )
                 BER_BVZERO( &passwd );                  BER_BVZERO( &passwd );
         }          }
   
   #ifdef HAVE_CYRUS_SASL
           if ( sasl_mech != NULL ) {
                   ber_memfree( sasl_mech );
                   sasl_mech = NULL;
           }
   #endif /* HAVE_CYRUS_SASL */
   
         if ( infile != NULL ) {          if ( infile != NULL ) {
                 ber_memfree( infile );                  ber_memfree( infile );
                 infile = NULL;                  infile = NULL;
Line 306  tool_destroy( void ) Line 317  tool_destroy( void )
                 ber_memfree( postread_attrs );                  ber_memfree( postread_attrs );
                 postread_attrs = NULL;                  postread_attrs = NULL;
         }          }
   
   #ifdef LDAP_CONTROL_X_SESSION_TRACKING
           if ( !BER_BVISNULL( &stValue ) ) {
                   ber_memfree( stValue.bv_val );
                   BER_BVZERO( &stValue );
           }
   
           if ( sessionTrackingName ) {
                   ber_memfree( sessionTrackingName );
                   sessionTrackingName = NULL;
           }
   #endif /* LDAP_CONTROL_X_SESSION_TRACKING */
 }  }
   
 void  void
Line 338  N_("             [!]postread[=<attrs>] Line 361  N_("             [!]postread[=<attrs>]
 N_("             [!]preread[=<attrs>]   (RFC 4527; comma-separated attr list)\n")  N_("             [!]preread[=<attrs>]   (RFC 4527; comma-separated attr list)\n")
 N_("             [!]relax\n")  N_("             [!]relax\n")
 #ifdef LDAP_CONTROL_X_SESSION_TRACKING  #ifdef LDAP_CONTROL_X_SESSION_TRACKING
 N_("             [!]sessiontracking\n")  N_("             [!]sessiontracking[=<username>]\n")
 #endif /* LDAP_CONTROL_X_SESSION_TRACKING */  #endif /* LDAP_CONTROL_X_SESSION_TRACKING */
 N_("             abandon, cancel, ignore (SIGINT sends abandon/cancel,\n"  N_("             abandon, cancel, ignore (SIGINT sends abandon/cancel,\n"
    "             or ignores response; if critical, doesn't wait for SIGINT.\n"     "             or ignores response; if critical, doesn't wait for SIGINT.\n"
Line 671  tool_args( int argc, char **argv ) Line 694  tool_args( int argc, char **argv )
                                         exit( EXIT_FAILURE );                                          exit( EXIT_FAILURE );
                                 }                                  }
                                 sessionTracking = 1;                                  sessionTracking = 1;
                                 if( crit ) {                                  if ( crit ) {
                                         fprintf( stderr, "sessiontracking: critical flag not allowed\n" );                                          fprintf( stderr, "sessiontracking: critical flag not allowed\n" );
                                         usage();                                          usage();
                                 }                                  }
                                   if ( cvalue ) {
                                           sessionTrackingName = ber_strdup( cvalue );
                                   }
 #endif /* LDAP_CONTROL_X_SESSION_TRACKING */  #endif /* LDAP_CONTROL_X_SESSION_TRACKING */
   
                         /* this shouldn't go here, really; but it's a feature... */                          /* this shouldn't go here, really; but it's a feature... */
Line 1471  tool_bind( LDAP *ld ) Line 1497  tool_bind( LDAP *ld )
         if ( sessionTracking ) {          if ( sessionTracking ) {
                 LDAPControl c;                  LDAPControl c;
   
                 if (stValue.bv_val == NULL && st_value( ld, &stValue ) ) {                  if ( BER_BVISNULL( &stValue) && st_value( ld, &stValue ) ) {
                         exit( EXIT_FAILURE );                          exit( EXIT_FAILURE );
                 }                  }
   
                 c.ldctl_oid = LDAP_CONTROL_X_SESSION_TRACKING;                  c.ldctl_oid = LDAP_CONTROL_X_SESSION_TRACKING;
                 c.ldctl_iscritical = 0;                  c.ldctl_iscritical = 0;
                 ber_dupbv( &c.ldctl_value, &stValue );                  c.ldctl_value = stValue;
   
                 sctrl[nsctrls] = c;                  sctrl[nsctrls] = c;
                 sctrls[nsctrls] = &sctrl[nsctrls];                  sctrls[nsctrls] = &sctrl[nsctrls];
Line 1904  tool_server_controls( LDAP *ld, LDAPCont Line 1930  tool_server_controls( LDAP *ld, LDAPCont
   
 #ifdef LDAP_CONTROL_X_SESSION_TRACKING  #ifdef LDAP_CONTROL_X_SESSION_TRACKING
         if ( sessionTracking ) {          if ( sessionTracking ) {
                 if ( stValue.bv_val == NULL && st_value( ld, &stValue ) ) {                  if ( BER_BVISNULL( &stValue ) && st_value( ld, &stValue ) ) {
                         exit( EXIT_FAILURE );                          exit( EXIT_FAILURE );
                 }                  }
   
                 c[i].ldctl_oid = LDAP_CONTROL_X_SESSION_TRACKING;                  c[i].ldctl_oid = LDAP_CONTROL_X_SESSION_TRACKING;
                 c[i].ldctl_iscritical = 0;                  c[i].ldctl_iscritical = 0;
                 ber_dupbv( &c[i].ldctl_value, &stValue );                  c[i].ldctl_value = stValue;
   
                 ctrls[i] = &c[i];                  ctrls[i] = &c[i];
                 i++;                  i++;

Removed from v.1.146  
changed lines
  Added in v.1.147


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