]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/filterentry.c
streamline group attr specification/diagnostics
[openldap] / servers / slapd / filterentry.c
index 34b8bc784f0643b34a7f48bc06ba85b52fb1e083..336476a8fd39d9a8f624b706e95a91a1607aee71 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2005 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -66,6 +66,12 @@ test_filter(
        int     rc;
        Debug( LDAP_DEBUG_FILTER, "=> test_filter\n", 0, 0, 0 );
 
+       if ( f->f_choice & SLAPD_FILTER_UNDEFINED ) {
+               Debug( LDAP_DEBUG_FILTER, "    UNDEFINED\n", 0, 0, 0 );
+               rc = SLAPD_COMPARE_UNDEFINED;
+               goto out;
+       }
+
        switch ( f->f_choice ) {
        case SLAPD_FILTER_COMPUTED:
                Debug( LDAP_DEBUG_FILTER, "    COMPUTED %s (%d)\n",
@@ -144,7 +150,7 @@ test_filter(
                    f->f_choice, 0, 0 );
                rc = LDAP_PROTOCOL_ERROR;
        }
-
+out:
        Debug( LDAP_DEBUG_FILTER, "<= test_filter %d\n", rc, 0, 0 );
        return( rc );
 }
@@ -158,7 +164,7 @@ static int test_mra_filter(
        void            *memctx;
        BER_MEMFREE_FN  *memfree;
 #ifdef LDAP_COMP_MATCH
-       int i, num_attr_vals;
+       int i, num_attr_vals = 0;
 #endif
 
        if ( op == NULL ) {
@@ -276,14 +282,14 @@ static int test_mra_filter(
                                        if ( normalize_attribute && mra->ma_rule->smr_normalize ) {
                                                /*
                                
-                               Document: draft-ietf-ldapbis-protocol
+                               Document: RFC 4511
 
                                    4.5.1. Search Request 
                                        ...
                                    If the type field is present and the matchingRule is present, 
                                    the matchValue is compared against entry attributes of the 
                                    specified type. In this case, the matchingRule MUST be one 
-                                   suitable for use with the specified type (see [Syntaxes]), 
+                                   suitable for use with the specified type (see [RFC4517]), 
                                    otherwise the filter item is Undefined.