static struct berval BV_DELETEOLDRDN = BER_BVC("deleteoldrdn");
static struct berval BV_NEWSUP = BER_BVC("newsuperior");
-#define BVICMP(a,b) ((a)->bv_len != (b)->bv_len ? \
- (a)->bv_len - (b)->bv_len : strcasecmp((a)->bv_val, (b)->bv_val))
+#define BV_CASEMATCH(a, b) \
+ ((a)->bv_len == (b)->bv_len && 0 == strcasecmp((a)->bv_val, (b)->bv_val))
static int process_ldif_rec LDAP_P(( char *rbuf, int lineno ));
static int parse_ldif_control LDAP_P(( struct berval *val, LDAPControl ***pctrls ));
freeval[i] = freev;
if ( dn == NULL ) {
- if ( linenum+i == 1 && !BVICMP( btype+i, &BV_VERSION )) {
+ if ( linenum+i == 1 && BV_CASEMATCH( btype+i, &BV_VERSION )) {
int v;
if( vals[i].bv_len == 0 || lutil_atoi( &v, vals[i].bv_val) != 0 || v != 1 ) {
fprintf( stderr,
}
version++;
- } else if ( !BVICMP( btype+i, &BV_DN )) {
+ } else if ( BV_CASEMATCH( btype+i, &BV_DN )) {
dn = vals[i].bv_val;
idn = i;
}
i = idn+1;
/* Check for "control" tag after dn and before changetype. */
- if (!BVICMP( btype+i, &BV_CONTROL)) {
+ if ( BV_CASEMATCH( btype+i, &BV_CONTROL )) {
/* Parse and add it to the list of controls */
rc = parse_ldif_control( vals+i, &pctrls );
if (rc != 0) {
}
/* Check for changetype */
- if ( !BVICMP( btype+i, &BV_CHANGETYPE )) {
+ if ( BV_CASEMATCH( btype+i, &BV_CHANGETYPE )) {
#ifdef LIBERAL_CHANGETYPE_MODOP
/* trim trailing spaces (and log warning ...) */
int icnt;
}
#endif /* LIBERAL_CHANGETYPE_MODOP */
- if ( BVICMP( vals+i, &BV_MODIFYCT ) == 0 ) {
+ if ( BV_CASEMATCH( vals+i, &BV_MODIFYCT )) {
new_entry = 0;
expect_modop = 1;
- } else if ( BVICMP( vals+i, &BV_ADDCT ) == 0 ) {
+ } else if ( BV_CASEMATCH( vals+i, &BV_ADDCT )) {
new_entry = 1;
modop = LDAP_MOD_ADD;
- } else if ( BVICMP( vals+i, &BV_MODRDNCT ) == 0
- || BVICMP( vals+i, &BV_MODDNCT ) == 0
- || BVICMP( vals+i, &BV_RENAMECT ) == 0)
+ } else if ( BV_CASEMATCH( vals+i, &BV_MODRDNCT )
+ || BV_CASEMATCH( vals+i, &BV_MODDNCT )
+ || BV_CASEMATCH( vals+i, &BV_RENAMECT ))
{
i++;
if ( i >= lines )
goto short_input;
- if ( BVICMP( btype+i, &BV_NEWRDN )) {
+ if ( !BV_CASEMATCH( btype+i, &BV_NEWRDN )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_NEWRDN.bv_val, btype[i].bv_val, linenum+i, dn );
i++;
if ( i >= lines )
goto short_input;
- if ( BVICMP( btype+i, &BV_DELETEOLDRDN )) {
+ if ( !BV_CASEMATCH( btype+i, &BV_DELETEOLDRDN )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_DELETEOLDRDN.bv_val, btype[i].bv_val, linenum+i, dn );
deleteoldrdn = ( vals[i].bv_val[0] == '0' ) ? 0 : 1;
i++;
if ( i < lines ) {
- if ( BVICMP( btype+i, &BV_NEWSUP )) {
+ if ( !BV_CASEMATCH( btype+i, &BV_NEWSUP )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_NEWSUP.bv_val, btype[i].bv_val, linenum+i, dn );
i++;
}
got_all = 1;
- } else if ( BVICMP( vals+i, &BV_DELETECT ) == 0 ) {
+ } else if ( BV_CASEMATCH( vals+i, &BV_DELETECT )) {
got_all = delete_entry = 1;
} else {
fprintf( stderr,
/* Make sure all attributes with multiple values are contiguous */
for (; i<lines; i++) {
for (j=i+1; j<lines; j++) {
- if ( !BVICMP( btype+i, btype+j )) {
+ if ( BV_CASEMATCH( btype+i, btype+j )) {
nmods--;
/* out of order, move intervening attributes down */
if ( j != i+1 ) {
k = -1;
BER_BVZERO(&bv);
for (i=idn; i<lines; i++) {
- if ( !BVICMP( btype+i, &BV_DN )) {
+ if ( BV_CASEMATCH( btype+i, &BV_DN )) {
fprintf( stderr, _("%s: attributeDescription \"%s\":"
" (possible missing newline"
" after line %d, entry \"%s\"?)\n"),
prog, btype[i].bv_val, linenum+i - 1, dn );
}
- if ( BVICMP(btype+i,&bv)) {
+ if ( !BV_CASEMATCH( btype+i, &bv )) {
bvl[k++] = NULL;
bv = btype[i];
lm[j].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
expect_modop = 0;
expect_sep = 1;
- if ( BVICMP( btype+i, &BV_MODOPADD ) == 0 ) {
+ if ( BV_CASEMATCH( btype+i, &BV_MODOPADD )) {
modop = LDAP_MOD_ADD;
mops[i] = M_SEP;
nmods--;
- } else if ( BVICMP( btype+i, &BV_MODOPREPLACE ) == 0 ) {
+ } else if ( BV_CASEMATCH( btype+i, &BV_MODOPREPLACE )) {
/* defer handling these since they might have no values.
* Use the BVALUES flag to signal that these were
* deferred. If values are provided later, this
modop = LDAP_MOD_REPLACE;
mops[i] = modop | LDAP_MOD_BVALUES;
btype[i] = vals[i];
- } else if ( BVICMP( btype+i, &BV_MODOPDELETE ) == 0 ) {
+ } else if ( BV_CASEMATCH( btype+i, &BV_MODOPDELETE )) {
modop = LDAP_MOD_DELETE;
mops[i] = modop | LDAP_MOD_BVALUES;
btype[i] = vals[i];
- } else if ( BVICMP( btype+i, &BV_MODOPINCREMENT ) == 0 ) {
+ } else if ( BV_CASEMATCH( btype+i, &BV_MODOPINCREMENT )) {
modop = LDAP_MOD_INCREMENT;
mops[i] = M_SEP;
nmods--;
expect_modop = 1;
nmods--;
} else {
- if ( BVICMP( btype+i, &bv )) {
+ if ( !BV_CASEMATCH( btype+i, &bv )) {
fprintf( stderr, _("%s: wrong attributeType at"
" line %d, entry \"%s\"\n"),
prog, linenum+i, dn );
/* If prev op was deferred and matches this type,
* clear the flag
*/
- if ( (mops[i-1]&LDAP_MOD_BVALUES) && !BVICMP(btype+i,
- btype+i-1)) {
+ if ( (mops[i-1] & LDAP_MOD_BVALUES)
+ && BV_CASEMATCH( btype+i, btype+i-1 ))
+ {
mops[i-1] = M_SEP;
nmods--;
}
for (j=i+1; j<lines; j++) {
if ( mops[j] == M_SEP || mops[i] != mops[j] )
continue;
- if ( !BVICMP( btype+i, btype+j )) {
+ if ( BV_CASEMATCH( btype+i, btype+j )) {
nmods--;
/* out of order, move intervening attributes down */
if ( j != i+1 ) {
for (i=idn; i<lines; i++) {
if ( mops[i] == M_SEP )
continue;
- if ( mops[i] != mops[i-1] || BVICMP(btype+i,&bv)) {
+ if ( mops[i] != mops[i-1] || !BV_CASEMATCH( btype+i, &bv )) {
bvl[k++] = NULL;
bv = btype[i];
lm[j].mod_op = mops[i] | LDAP_MOD_BVALUES;
int cancel_msgid = -1;
if( filtpatt != NULL ) {
- size_t max_fsize = strlen( filtpatt ) + strlen( value ) + 1;
+ size_t max_fsize = strlen( filtpatt ) + strlen( value ) + 1, outlen;
filter = malloc( max_fsize );
if( filter == NULL ) {
perror( "malloc" );
return EXIT_FAILURE;
}
- if( snprintf( filter, max_fsize, filtpatt, value ) >= max_fsize ) {
+ outlen = snprintf( filter, max_fsize, filtpatt, value );
+ if( outlen >= max_fsize ) {
fprintf( stderr, "Bad filter pattern: \"%s\"\n", filtpatt );
free( filter );
return EXIT_FAILURE;
assert( np != NULL );
assert( *np >= 0 );
assert( idx >= 0 );
- assert( idx <= *np );
+ assert( (unsigned) idx <= *np );
n = *np;
assert( np != NULL );
assert( *np >= 0 );
assert( idx >= 0 );
- assert( idx < *np );
+ assert( (unsigned) idx < *np );
v = *vp;
ber_int_t ret;
unsigned tmpsize = dst->buf_size;
- ret = sasl_encode( sasl_context, buf, len,
+ ret = sasl_encode( sasl_context, (char *)buf, len,
(SASL_CONST char **)&dst->buf_base,
&tmpsize );
/* and server provided us with data? */
Debug( LDAP_DEBUG_TRACE,
"ldap_int_sasl_bind: rc=%d sasl=%d len=%ld\n",
- rc, saslrc, scred ? scred->bv_len : -1 );
+ rc, saslrc, scred ? (long) scred->bv_len : -1L );
ber_bvfree( scred );
scred = NULL;
}
const char *in,
sasl_security_properties_t *secprops )
{
- int i, j, l;
+ unsigned i, j, l;
char **props;
unsigned sflags = 0;
int got_sflags = 0;
/* NOTE: those assertions are repeated in ldap_int_bisect_delete() */
assert( idx >= 0 );
- assert( idx < ld->ld_nabandoned );
+ assert( (unsigned) idx < ld->ld_nabandoned );
assert( ld->ld_abandoned[ idx ] == msgid );
return ldap_int_bisect_delete( &ld->ld_abandoned, &ld->ld_nabandoned,
* set point for insertion if ins is non-NULL
*/
int
-bdb_attr_slot( struct bdb_info *bdb, AttributeDescription *ad, unsigned *ins )
+bdb_attr_slot( struct bdb_info *bdb, AttributeDescription *ad, int *ins )
{
unsigned base = 0, cursor = 0;
unsigned n = bdb->bi_nattrs;
int val = 0;
while ( 0 < n ) {
- int pivot = n >> 1;
+ unsigned pivot = n >> 1;
cursor = base + pivot;
val = SLAP_PTRCMP( ad, bdb->bi_attrs[cursor]->ai_desc );
static int
ainfo_insert( struct bdb_info *bdb, AttrInfo *a )
{
- unsigned x;
+ int x;
int i = bdb_attr_slot( bdb, a->ai_desc, &x );
/* Is it a dup? */
void bdb_attr_flush( struct bdb_info *bdb );
int bdb_attr_slot( struct bdb_info *bdb,
- AttributeDescription *desc, unsigned *insert );
+ AttributeDescription *desc, int *insert );
int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb,
const char *fname, int lineno,
goto done;
}
- assert( j1 + j1 <= sizeof( c )/sizeof(LDAPControl) );
+ assert( j1 + j2 <= (int) (sizeof( c )/sizeof( c[0] )) );
if ( op->o_ctrls ) {
for ( n = 0; op->o_ctrls[ n ]; n++ )
BER_BVZERO( bvout );
-#define WHATSLEFT ( sizeof( buf ) - ( ptr - buf ) )
+#define WHATSLEFT ( &buf[ sizeof( buf ) ] - ptr )
for ( i = 0; ri->ri_num[ i ] != SLAP_RETRYNUM_TAIL; i++ ) {
if ( i > 0 ) {
ptr = lutil_strncopy( ptr, suffix.bv_val, suffix.bv_len );
ptr = lutil_strcopy( ptr, "))" );
ptr[ 0 ] = '\0';
- assert( filter->bv_len == ptr - filter->bv_val );
+ assert( ptr == &filter->bv_val[ filter->bv_len ] );
if ( suffix.bv_val != be->be_nsuffix[ 0 ].bv_val ) {
ch_free( suffix.bv_val );
isconfig = 1;
}
ptr1 = ber_bvchr( &e->e_name, '{' );
- if ( ptr1 && ptr1 - e->e_name.bv_val < rdn.bv_len ) {
+ if ( ptr1 && ptr1 < &e->e_name.bv_val[ rdn.bv_len ] ) {
char *next;
ptr2 = strchr( ptr1, '}' );
- if (!ptr2 || ptr2 - e->e_name.bv_val > rdn.bv_len)
+ if ( !ptr2 || ptr2 > &e->e_name.bv_val[ rdn.bv_len ] )
return LDAP_NAMING_VIOLATION;
if ( ptr2-ptr1 == 1)
return LDAP_NAMING_VIOLATION;
attr_merge_one( e, ad_reqMessage, &bv, NULL );
}
bv.bv_len = snprintf( timebuf, sizeof( timebuf ), "%d", rs->sr_err );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( timebuf ) ) {
+ if ( bv.bv_len < sizeof( timebuf ) ) {
bv.bv_val = timebuf;
attr_merge_one( e, ad_reqResult, &bv, NULL );
}
}
bv.bv_val = timebuf;
bv.bv_len = snprintf( bv.bv_val, sizeof( timebuf ), "%d", rs->sr_nentries );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( timebuf ) ) {
+ if ( bv.bv_len < sizeof( timebuf ) ) {
attr_merge_one( e, ad_reqEntries, &bv, NULL );
} /* else? */
bv.bv_len = snprintf( bv.bv_val, sizeof( timebuf ), "%d", op->ors_tlimit );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( timebuf ) ) {
+ if ( bv.bv_len < sizeof( timebuf ) ) {
attr_merge_one( e, ad_reqTimeLimit, &bv, NULL );
} /* else? */
bv.bv_len = snprintf( bv.bv_val, sizeof( timebuf ), "%d", op->ors_slimit );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( timebuf ) ) {
+ if ( bv.bv_len < sizeof( timebuf ) ) {
attr_merge_one( e, ad_reqSizeLimit, &bv, NULL );
} /* else? */
break;
case LOG_EN_BIND:
bv.bv_val = timebuf;
bv.bv_len = snprintf( bv.bv_val, sizeof( timebuf ), "%d", op->o_protocol );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( timebuf ) ) {
+ if ( bv.bv_len < sizeof( timebuf ) ) {
attr_merge_one( e, ad_reqVersion, &bv, NULL );
} /* else? */
if ( op->orb_method == LDAP_AUTH_SIMPLE ) {
e = accesslog_entry( op, rs, LOG_EN_ABANDON, &op2 );
bv.bv_val = buf;
bv.bv_len = snprintf( buf, sizeof( buf ), "%d", op->orn_msgid );
- if ( bv.bv_len >= 0 && bv.bv_len < sizeof( buf ) ) {
+ if ( bv.bv_len < sizeof( buf ) ) {
attr_merge_one( e, ad_reqId, &bv, NULL );
} /* else? */
/* FIXME: should not hardcode "olcDatabase" here */
bv.bv_len = snprintf( ca->cr_msg, sizeof( ca->cr_msg ),
"olcDatabase=%s", cm->db.bd_info->bi_type );
- if ( bv.bv_len < 0 || bv.bv_len >= sizeof( ca->cr_msg ) ) {
+ if ( bv.bv_len >= sizeof( ca->cr_msg ) ) {
return -1;
}
bv.bv_val = ca->cr_msg;
cf.f_av_value = si->si_ctxcsn[maxid];
fop.ors_filterstr.bv_len = snprintf( buf, sizeof( buf ),
"(entryCSN>=%s)", cf.f_av_value.bv_val );
- if ( fop.ors_filterstr.bv_len < 0 || fop.ors_filterstr.bv_len >= sizeof( buf ) ) {
+ if ( fop.ors_filterstr.bv_len >= sizeof( buf ) ) {
return LDAP_OTHER;
}
fop.ors_attrsonly = 0;
fop.ors_filterstr.bv_len = snprintf( buf, sizeof( buf ),
"(entryCSN<=%s)", cf.f_av_value.bv_val );
}
- if ( fop.ors_filterstr.bv_len < 0 || fop.ors_filterstr.bv_len >= sizeof( buf ) ) {
+ if ( fop.ors_filterstr.bv_len >= sizeof( buf ) ) {
return LDAP_OTHER;
}
fop.ors_attrsonly = 1;
struct berval bv;
bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ),
"%d %d", si->si_chkops, si->si_chktime );
- if ( bv.bv_len < 0 || bv.bv_len >= sizeof( c->cr_msg ) ) {
+ if ( bv.bv_len >= sizeof( c->cr_msg ) ) {
rc = 1;
} else {
bv.bv_val = c->cr_msg;
/* FIXME: should not hardcode "olcDatabase" here */
bv.bv_len = snprintf( ca->cr_msg, sizeof( ca->cr_msg ),
"olcDatabase=%s", ov->db.bd_info->bi_type );
- if ( bv.bv_len < 0 || bv.bv_len >= sizeof( ca->cr_msg ) ) {
+ if ( bv.bv_len >= sizeof( ca->cr_msg ) ) {
return -1;
}
bv.bv_val = ca->cr_msg;
Operation op = {0};
Opheader oph;
SlapReply rs = {REP_RESULT};
- int rc, i, j;
+ int rc, i;
+ unsigned j;
Connection *conn = NULL;
const struct propval *pr;
Modifications *modlist = NULL, **modtail = &modlist, *mod;