]> git.saurik.com Git - apple/security.git/blobdiff - cdsa/cdsa_utilities/MetaAttribute.h
Security-163.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / MetaAttribute.h
index cd2ad83135d26cb5712951091f4b39c6664c0685..78a7f77cb36b83b7437591a348ab497f331df226 100644 (file)
@@ -135,11 +135,15 @@ public:
        bool evaluate(const DbValue *value, const ReadSection &rs, CSSM_DB_OPERATOR op) const
        {
                uint32 offset, numValues;
-               unpackNumberOfValues(rs, numValues, offset);            
-               if (numValues == 0)
-                       return false;
+               unpackNumberOfValues(rs, numValues, offset);
 
-               return (dynamic_cast<const T *>(value))->evaluate(T(rs, offset), op);
+               /* If any of the values for this attribute match we have a
+                  match.   This is the same behaviour that indexes have. */
+               for (uint32 ix = 0; ix < numValues; ++ix)
+                       if (dynamic_cast<const T *>(value)->evaluate(T(rs, offset), op))
+                               return true;
+
+               return false;
        }
 
        bool evaluate(const DbValue *value1, const DbValue *value2, CSSM_DB_OPERATOR op) const