]> andersk Git - moira.git/blobdiff - server/qvalidate.pc
Add validation of numeric query arguments
[moira.git] / server / qvalidate.pc
index 400d6c5c4b37b927ec375a472714357ac3e6386d..dfd8e05f11b2d713109b67985ae5ba08b61cd55c 100644 (file)
@@ -37,6 +37,7 @@ int validate_rename(char *argv[], struct valobj *vo);
 int validate_type(char *argv[], struct valobj *vo);
 int validate_typedata(struct query *, char *argv[], struct valobj *vo);
 int validate_len(char *argv[], struct valobj *vo);
+int validate_num(char *argv[], struct valobj *vo);
 int lock_table(struct valobj *vo);
 int readlock_table(struct valobj *vo);
 int convert_wildcards_uppercase(char *arg);
@@ -141,6 +142,12 @@ int validate_fields(q, argv, vo, n)
            status = validate_len(argv, vo);
            break;
 
+       case V_NUM:
+           if (log_flags & LOG_VALID)
+             com_err(whoami, 0, "validating number: %s", argv[vo->index]);
+           status = validate_num(argv, vo);
+           break;
+
        case V_LOCK:
            status = lock_table(vo);
            break;
@@ -529,6 +536,20 @@ int readlock_table(vo)
                            */
 }
 
+/* Make sure the data is numeric */
+int validate_num(argv, vo)
+    register char *argv[];
+    register struct valobj *vo;
+{
+    char *p = argv[vo->index];
+    
+    if (*p == '-') p++;
+    for (;*p;p++)
+        if (*p < '0' || *p > '9') return MR_INTEGER;
+    
+    return MR_EXISTS;
+}
+
 /* Check the database at startup time. */
 
 void sanity_check_database(void)
This page took 0.030081 seconds and 4 git commands to generate.