Diff for /servers/slapd/ad.c between versions 1.74.2.13 and 1.74.2.14

version 1.74.2.13, 2006/04/05 18:26:36 version 1.74.2.14, 2006/05/09 19:26:26
Line 1 Line 1
 /* ad.c - routines for dealing with attribute descriptions */  /* ad.c - routines for dealing with attribute descriptions */
 /* $OpenLDAP: pkg/ldap/servers/slapd/ad.c,v 1.74.2.12 2006/01/17 19:09:51 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/ad.c,v 1.74.2.13 2006/04/05 18:26:36 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-2006 The OpenLDAP Foundation.   * Copyright 1998-2006 The OpenLDAP Foundation.
Line 124  int slap_str2ad( Line 124  int slap_str2ad(
 }  }
   
 static char *strchrlen(  static char *strchrlen(
         const char *p,           const char *beg, 
           const char *end,
         const char ch,           const char ch, 
         int *len )          int *len )
 {  {
         int i;          const char *p;
   
         for( i=0; p[i]; i++ ) {          for( p=beg; *p && p < end; p++ ) {
                 if( p[i] == ch ) {                  if( *p == ch ) {
                         *len = i;                          *len = p - beg;
                         return (char *) &p[i];                          return (char *) p;
                 }                  }
         }          }
   
         *len = i;          *len = p - beg;
         return NULL;          return NULL;
 }  }
   
Line 148  int slap_bv2ad( Line 149  int slap_bv2ad(
 {  {
         int rtn = LDAP_UNDEFINED_TYPE;          int rtn = LDAP_UNDEFINED_TYPE;
         AttributeDescription desc, *d2;          AttributeDescription desc, *d2;
         char *name, *options;          char *name, *options, *optn;
         char *opt, *next;          char *opt, *next;
         int ntags;          int ntags;
         int tagslen;          int tagslen;
Line 201  int slap_bv2ad( Line 202  int slap_bv2ad(
         ntags = 0;          ntags = 0;
         memset( tags, 0, sizeof( tags ));          memset( tags, 0, sizeof( tags ));
         tagslen = 0;          tagslen = 0;
           optn = bv->bv_val + bv->bv_len;
   
         for( opt=options; opt != NULL; opt=next ) {          for( opt=options; opt != NULL; opt=next ) {
                 int optlen;                  int optlen;
                 opt++;                   opt++; 
                 next = strchrlen( opt, ';', &optlen );                  next = strchrlen( opt, optn, ';', &optlen );
   
                 if( optlen == 0 ) {                  if( optlen == 0 ) {
                         *text = "zero length option is invalid";                          *text = "zero length option is invalid";
Line 443  static int is_ad_subtags( Line 445  static int is_ad_subtags(
         struct berval *subtagsbv,           struct berval *subtagsbv, 
         struct berval *suptagsbv )          struct berval *suptagsbv )
 {  {
         const char *suptags, *supp, *supdelimp;          const char *suptags, *supp, *supdelimp, *supn;
         const char *subtags, *subp, *subdelimp;          const char *subtags, *subp, *subdelimp, *subn;
         int  suplen, sublen;          int  suplen, sublen;
   
         subtags =subtagsbv->bv_val;          subtags =subtagsbv->bv_val;
         suptags =suptagsbv->bv_val;          suptags =suptagsbv->bv_val;
           subn = subtags + subtagsbv->bv_len;
           supn = suptags + suptagsbv->bv_len;
   
         for( supp=suptags ; supp; supp=supdelimp ) {          for( supp=suptags ; supp; supp=supdelimp ) {
                 supdelimp = strchrlen( supp, ';', &suplen );                  supdelimp = strchrlen( supp, supn, ';', &suplen );
                 if( supdelimp ) supdelimp++;                  if( supdelimp ) supdelimp++;
   
                 for( subp=subtags ; subp; subp=subdelimp ) {                  for( subp=subtags ; subp; subp=subdelimp ) {
                         subdelimp = strchrlen( subp, ';', &sublen );                          subdelimp = strchrlen( subp, subn, ';', &sublen );
                         if( subdelimp ) subdelimp++;                          if( subdelimp ) subdelimp++;
   
                         if ( suplen > sublen                          if ( suplen > sublen

Removed from v.1.74.2.13  
changed lines
  Added in v.1.74.2.14


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