Skip to content

Negated text-match must not match non-existing properties

I found another bug in the evaluation of addressbook-query filters. When there is a prop-filter with a negated text-match filter, this prop-filter must not match vcards where the requested property does not exist.

See RFC 6352:

An address object is said to match a CARDDAV:prop-filter if: * A vCard property of the type specified by the "name" attribute exists, and the CARDDAV:prop-filter is empty, or it matches any specified CARDDAV:text-match or CARDDAV:param-filter conditions. The "test" attribute specifies whether any (logical OR) or all (logical AND) of the text-filter and param- filter tests need to match in order for the overall filter to match.

Merge request reports