summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
index 661cd51..097142b 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
@@ -18,4 +18,7 @@
* History:
* $Log$
+ * Revision 1.6 2003/07/07 16:19:47 eilers
+ * Fixing serious bug in hasQuerySettings()
+ *
* Revision 1.5 2003/04/13 18:07:10 zecke
* More API doc
@@ -448,7 +451,24 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
*/
+ // Step 1: Check whether the given settings are supported by this backend
+ if ( ( querySettings & (
+ OContactAccess::IgnoreCase
+ | OContactAccess::WildCards
+ | OContactAccess::DateDiff
+ | OContactAccess::DateYear
+ | OContactAccess::DateMonth
+ | OContactAccess::DateDay
+ | OContactAccess::RegExp
+ | OContactAccess::ExactMatch
+ ) ) != querySettings )
+ return false;
+
+ // Step 2: Check whether the given combinations are ok..
+
+ // IngoreCase alone is invalid
if ( querySettings == OContactAccess::IgnoreCase )
return false;
+ // WildCards, RegExp and ExactMatch should never used at the same time
switch ( querySettings & ~( OContactAccess::IgnoreCase
| OContactAccess::DateDiff
@@ -464,4 +484,6 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
case OContactAccess::ExactMatch:
return ( true );
+ case 0: // one of the upper removed bits were set..
+ return ( true );
default:
return ( false );