return rc;
}
rc = parse_comp_filter( op, &cav, filt, text );
- bv->bv_val = cav.cav_ptr;
+ /* bv->bv_val = cav.cav_ptr; */
return rc;
}
*/
ber_tag_t tag;
- int err;
+ int err = LDAP_SUCCESS;
ComponentFilter f;
/* TAG : item, and, or, not in RFC 4515 */
tag = strip_cav_tag( cav );
return LDAP_PROTOCOL_ERROR;
}
- if ( tag != LDAP_COMP_FILTER_NOT )
- strip_cav_str( cav, "{");
-
- err = LDAP_SUCCESS;
+ if ( tag != LDAP_COMP_FILTER_NOT ) {
+ err = strip_cav_str( cav, "{");
+ if ( err )
+ goto invalid;
+ }
f.cf_next = NULL;
f.cf_choice = tag;
break;
}
+invalid:
if ( err != LDAP_SUCCESS && err != SLAPD_DISCONNECT ) {
*text = "Component Filter Syntax Error";
return err;
}
if ( tag != LDAP_COMP_FILTER_NOT )
- strip_cav_str( cav, "}");
+ err = strip_cav_str( cav, "}");
if ( err == LDAP_SUCCESS ) {
if ( op ) {
ber_len_t len;
ber_int_t version = SLAP_X509_V1;
+ if ( BER_BVISNULL( in ) || BER_BVISEMPTY( in ))
+ return LDAP_INVALID_SYNTAX;
+
ber_init2( ber, in, LBER_USE_DER );
tag = ber_skip_tag( ber, &len ); /* Signed wrapper */
if ( tag != LBER_SEQUENCE ) return LDAP_INVALID_SYNTAX;