libidav/davqlparser.c

changeset 103
b29692d5f7a7
parent 102
e9ae1318a559
child 106
9cec78f23cbf
--- a/libidav/davqlparser.c	Sat May 02 18:32:50 2015 +0200
+++ b/libidav/davqlparser.c	Sat May 02 18:44:25 2015 +0200
@@ -704,6 +704,10 @@
                 "FROM", sfmtarg(tokendata)).ptr;
             return 0;
         }
+    default:
+        stmt->errorcode = DAVQL_ERROR_INVALID;
+        stmt->errormessage = strdup(_parser_state);
+        return 0;
     }
 }
 
@@ -761,18 +765,17 @@
         if (!sstrcasecmp(tokendata, S("depth"))) {
             state->key = 1;
             state->step = 1;
+            if (state->keymask & state->key) {
+                stmt->errorcode = DAVQL_ERROR_DUPLICATED_ATTRIBUTE;
+                stmt->errormessage = ucx_sprintf(_duplicated_attribute,
+                    sfmtarg(tokendata)).ptr;
+            } else {
+                state->keymask |= state->key;
+            }
         } else {
             stmt->errorcode = DAVQL_ERROR_UNKNOWN_ATTRIBUTE;
             stmt->errormessage = ucx_sprintf(_unknown_attribute,
                 sfmtarg(tokendata)).ptr;
-            break;
-        }
-        if (state->keymask & state->key) {
-            stmt->errorcode = DAVQL_ERROR_DUPLICATED_ATTRIBUTE;
-            stmt->errormessage = ucx_sprintf(_duplicated_attribute,
-                sfmtarg(tokendata)).ptr;
-        } else {
-            state->keymask |= state->key;
         }
         return _step_WITH_; // continue parsing WITH clause
     case 1:

mercurial