X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fgetfilter.c;h=c837631e6d65f3acd36ea3b4dfca7f73a62cc223;hb=49d73e12a720cfe052a335d82e67994ff261d21c;hp=94f73c3c77d804c8014b9678cfa21c507b15b9ce;hpb=dc07e765f263ef459dcd2afd1ece01cfc85a0edd;p=openldap diff --git a/libraries/libldap/getfilter.c b/libraries/libldap/getfilter.c index 94f73c3c77..c837631e6d 100644 --- a/libraries/libldap/getfilter.c +++ b/libraries/libldap/getfilter.c @@ -1,5 +1,6 @@ +/* $OpenLDAP$ */ /* - * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ /* Portions @@ -12,9 +13,9 @@ #include "portable.h" #include -#include -#include +#include + #include #include #include @@ -59,7 +60,7 @@ ldap_init_getfilter( LDAP_CONST char *fname ) return( NULL ); } - if (( buf = malloc( (size_t)len )) == NULL ) { + if (( buf = LDAP_MALLOC( (size_t)len )) == NULL ) { fclose( fp ); return( NULL ); } @@ -69,20 +70,20 @@ ldap_init_getfilter( LDAP_CONST char *fname ) fclose( fp ); if ( rlen != len && !eof ) { /* error: didn't get the whole file */ - free( buf ); + LDAP_FREE( buf ); return( NULL ); } lfdp = ldap_init_getfilter_buf( buf, rlen ); - free( buf ); + LDAP_FREE( buf ); return( lfdp ); } LDAPFiltDesc * -ldap_init_getfilter_buf( char *buf, long buflen ) +ldap_init_getfilter_buf( char *buf, ber_len_t buflen ) { LDAPFiltDesc *lfdp; LDAPFiltList *flp, *nextflp; @@ -92,7 +93,7 @@ ldap_init_getfilter_buf( char *buf, long buflen ) int rc; regex_t re; - if (( lfdp = (LDAPFiltDesc *)calloc( 1, sizeof( LDAPFiltDesc))) == NULL ) { + if (( lfdp = (LDAPFiltDesc *)LDAP_CALLOC( 1, sizeof( LDAPFiltDesc))) == NULL ) { return( NULL ); } @@ -100,25 +101,25 @@ ldap_init_getfilter_buf( char *buf, long buflen ) fip = NULL; tag = NULL; - while ( buflen > 0 && ( tokcnt = next_line_tokens( &buf, &buflen, &tok )) + while ( buflen > 0 && ( tokcnt = ldap_int_next_line_tokens( &buf, &buflen, &tok )) > 0 ) { switch( tokcnt ) { case 1: /* tag line */ if ( tag != NULL ) { - free( tag ); + LDAP_FREE( tag ); } tag = tok[ 0 ]; - free( tok ); + LDAP_FREE( tok ); break; case 4: case 5: /* start of filter info. list */ - if (( nextflp = (LDAPFiltList *)calloc( 1, sizeof( LDAPFiltList ))) + if (( nextflp = (LDAPFiltList *)LDAP_CALLOC( 1, sizeof( LDAPFiltList ))) == NULL ) { ldap_getfilter_free( lfdp ); return( NULL ); } - nextflp->lfl_tag = strdup( tag ); + nextflp->lfl_tag = LDAP_STRDUP( tag ); nextflp->lfl_pattern = tok[ 0 ]; if ( (rc = regcomp( &re, nextflp->lfl_pattern, 0 )) != 0 ) { #ifdef LDAP_LIBUI @@ -129,7 +130,7 @@ ldap_init_getfilter_buf( char *buf, long buflen ) nextflp->lfl_pattern, error ); errno = EINVAL; #endif /* LDAP_LIBUI */ - free_strarray( tok ); + LDAP_VFREE( tok ); return( NULL ); } regfree(&re); @@ -152,10 +153,10 @@ ldap_init_getfilter_buf( char *buf, long buflen ) case 2: case 3: /* filter, desc, and optional search scope */ if ( nextflp != NULL ) { /* add to info list */ - if (( nextfip = (LDAPFiltInfo *)calloc( 1, + if (( nextfip = (LDAPFiltInfo *)LDAP_CALLOC( 1, sizeof( LDAPFiltInfo ))) == NULL ) { ldap_getfilter_free( lfdp ); - free_strarray( tok ); + LDAP_VFREE( tok ); return( NULL ); } if ( fip == NULL ) { /* first one */ @@ -175,24 +176,24 @@ ldap_init_getfilter_buf( char *buf, long buflen ) } else if ( strcasecmp( tok[ 2 ], "base" ) == 0 ) { nextfip->lfi_scope = LDAP_SCOPE_BASE; } else { - free_strarray( tok ); + LDAP_VFREE( tok ); ldap_getfilter_free( lfdp ); errno = EINVAL; return( NULL ); } - free( tok[ 2 ] ); + LDAP_FREE( tok[ 2 ] ); tok[ 2 ] = NULL; } else { nextfip->lfi_scope = LDAP_SCOPE_SUBTREE; /* default */ } nextfip->lfi_isexact = ( strchr( tok[ 0 ], '*' ) == NULL && strchr( tok[ 0 ], '~' ) == NULL ); - free( tok ); + LDAP_FREE( tok ); } break; default: - free_strarray( tok ); + LDAP_VFREE( tok ); ldap_getfilter_free( lfdp ); errno = EINVAL; return( NULL ); @@ -200,7 +201,7 @@ ldap_init_getfilter_buf( char *buf, long buflen ) } if ( tag != NULL ) { - free( tag ); + LDAP_FREE( tag ); } return( lfdp ); @@ -211,14 +212,14 @@ void ldap_setfilteraffixes( LDAPFiltDesc *lfdp, LDAP_CONST char *prefix, LDAP_CONST char *suffix ) { if ( lfdp->lfd_filtprefix != NULL ) { - free( lfdp->lfd_filtprefix ); + LDAP_FREE( lfdp->lfd_filtprefix ); } - lfdp->lfd_filtprefix = ( prefix == NULL ) ? NULL : strdup( prefix ); + lfdp->lfd_filtprefix = ( prefix == NULL ) ? NULL : LDAP_STRDUP( prefix ); if ( lfdp->lfd_filtsuffix != NULL ) { - free( lfdp->lfd_filtsuffix ); + LDAP_FREE( lfdp->lfd_filtsuffix ); } - lfdp->lfd_filtsuffix = ( suffix == NULL ) ? NULL : strdup( suffix ); + lfdp->lfd_filtsuffix = ( suffix == NULL ) ? NULL : LDAP_STRDUP( suffix ); } @@ -233,8 +234,8 @@ ldap_getfirstfilter( regex_t re; if ( lfdp->lfd_curvalcopy != NULL ) { - free( lfdp->lfd_curvalcopy ); - free( lfdp->lfd_curvalwords ); + LDAP_FREE( lfdp->lfd_curvalcopy ); + LDAP_FREE( lfdp->lfd_curvalwords ); } lfdp->lfd_curval = value; @@ -242,17 +243,17 @@ ldap_getfirstfilter( for ( flp = lfdp->lfd_filtlist; flp != NULL; flp = flp->lfl_next ) { /* compile tagpat, continue if we fail */ - if (regcomp(&re, tagpat, 0) != 0) + if (regcomp(&re, tagpat, REG_EXTENDED|REG_NOSUB) != 0) continue; - /* match tagpatern and tag, continue if we fail */ + /* match tagpattern and tag, continue if we fail */ rc = regexec(&re, flp->lfl_tag, 0, NULL, 0); regfree(&re); if (rc != 0) continue; /* compile flp->ifl_pattern, continue if we fail */ - if (regcomp(&re, flp->lfl_pattern, 0) != 0) + if (regcomp(&re, flp->lfl_pattern, REG_EXTENDED|REG_NOSUB) != 0) continue; /* match ifl_pattern and lfd_curval, continue if we fail */ @@ -270,13 +271,13 @@ ldap_getfirstfilter( return( NULL ); } - if (( lfdp->lfd_curvalcopy = strdup( value )) == NULL ) { + if (( lfdp->lfd_curvalcopy = LDAP_STRDUP( value )) == NULL ) { return( NULL ); } if ( break_into_words( lfdp->lfd_curvalcopy, flp->lfl_delims, &lfdp->lfd_curvalwords ) < 0 ) { - free( lfdp->lfd_curvalcopy ); + LDAP_FREE( lfdp->lfd_curvalcopy ); lfdp->lfd_curvalcopy = NULL; return( NULL ); } @@ -313,7 +314,7 @@ ldap_getnextfilter( LDAPFiltDesc *lfdp ) void ldap_build_filter( char *filtbuf, - unsigned long buflen, + ber_len_t buflen, LDAP_CONST char *pattern, LDAP_CONST char *prefix, LDAP_CONST char *suffix, @@ -345,12 +346,12 @@ ldap_build_filter( if ( *p == '%' ) { ++p; if ( *p == 'v' ) { - if ( isdigit( (unsigned char) p[1] )) { + if ( LDAP_DIGIT( (unsigned char) p[1] )) { ++p; wordnum = *p - '1'; if ( *(p+1) == '-' ) { ++p; - if ( isdigit( (unsigned char) p[1] )) { + if ( LDAP_DIGIT( (unsigned char) p[1] )) { ++p; endwordnum = *p - '1'; /* e.g., "%v2-4" */ if ( endwordnum > wordcount - 1 ) { @@ -397,15 +398,14 @@ ldap_build_filter( *f++ = *p; } - if ( (unsigned long) (f - filtbuf) > buflen ) { + if ( (size_t) (f - filtbuf) > buflen ) { /* sanity check */ --f; break; } } - if ( suffix != NULL && ( - (unsigned long) ( f - filtbuf ) < buflen ) ) + if ( suffix != NULL && ( (size_t) (f - filtbuf) < buflen ) ) { strcpy( f, suffix ); } else { @@ -421,7 +421,7 @@ break_into_words( /* LDAP_CONST */ char *str, LDAP_CONST char *delims, char ***w int count; char *tok_r; - if (( words = (char **)calloc( 1, sizeof( char * ))) == NULL ) { + if (( words = (char **)LDAP_CALLOC( 1, sizeof( char * ))) == NULL ) { return( -1 ); } count = 0; @@ -429,7 +429,7 @@ break_into_words( /* LDAP_CONST */ char *str, LDAP_CONST char *delims, char ***w word = ldap_pvt_strtok( str, delims, &tok_r ); while ( word != NULL ) { - if (( words = (char **)realloc( words, + if (( words = (char **)LDAP_REALLOC( words, ( count + 2 ) * sizeof( char * ))) == NULL ) { return( -1 ); }