]> andersk Git - moira.git/blobdiff - server/qvalidate.pc
cups-lpd DCM.
[moira.git] / server / qvalidate.pc
index 41a51ec77e3ed846f8a23f80826ffcdfbad622e9..2d7a35ae7f955adeccea66c83599fd3b6636badd 100644 (file)
@@ -204,10 +204,11 @@ int validate_id(struct query *q, char *argv[], struct valobj *vo)
       return MR_EXISTS;
     }
   else if (status == MR_NO_MATCH && tbl == STRINGS_TABLE &&
-          (q->type == APPEND || q->type == UPDATE))
+          (q->type == MR_Q_APPEND || q->type == MR_Q_UPDATE))
     {
+      if (strlen(name) >= STRINGS_STRING_SIZE)
+       return MR_ARG_TOO_LONG;
       id = add_string(name);
-      cache_entry(name, STRINGS_TABLE, id);
       *(int *)argv[vo->index] = id;
       return MR_EXISTS;
     }
@@ -232,6 +233,8 @@ int validate_name(char *argv[], struct valobj *vo)
            *c = toupper(*c);
        }
     }
+  if (!*name)
+    return MR_RESERVED;
   sprintf(stmt_buf, "SELECT DISTINCT COUNT(*) FROM %s WHERE %s.%s = '%s'",
          table_name[vo->table], table_name[vo->table], namefield, name);
   dosql(sqlbuffer);
@@ -263,6 +266,8 @@ int validate_rename(char *argv[], struct valobj *vo)
            *c = toupper(*c);
        }
     }
+  if (!*name)
+    return MR_RESERVED;
   namefield = vo->namefield;
   idfield = vo->idfield;
   id = -1;
@@ -373,7 +378,7 @@ int validate_typedata(struct query *q, char *argv[], struct valobj *vo)
           * that we're trying to resolve, we should get the value of
           * numvalues.[idfield] for the id.
           */
-         if (vo->idfield && !strcmp(argv[0], argv[vo->index]))
+         if (vo->idfield && (*(int *)argv[0] == *(int *)argv[vo->index]))
            {
              set_next_object_id(q->validate->object_id, q->rtable, 0);
              name = vo->idfield;
@@ -410,15 +415,16 @@ int validate_typedata(struct query *q, char *argv[], struct valobj *vo)
        return MR_STRING;
       if (status == MR_NO_MATCH)
        {
-         if (q->type != APPEND && q->type != UPDATE)
+         if (q->type != MR_Q_APPEND && q->type != MR_Q_UPDATE)
            return MR_STRING;
+         if (strlen(name) >= STRINGS_STRING_SIZE)
+           return MR_ARG_TOO_LONG;
          id = add_string(name);
-         cache_entry(name, STRINGS_TABLE, id);
        }
       else if (status)
        return status;
     }
-  else if (!strcmp(data_type, "none"))
+  else if (!strcmp(data_type, "none") || !strcmp(data_type, "all"))
     id = 0;
   else
     return MR_TYPE;
@@ -460,11 +466,12 @@ int validate_num(char *argv[], struct valobj *vo)
       strcpy(p, "-1");
       return MR_EXISTS;
     }
-  if (!*p)
-    return MR_INTEGER;
 
   if (*p == '-')
     p++;
+  if (!*p)
+    return MR_INTEGER;
+
   for (; *p; p++)
     {
       if (*p < '0' || *p > '9')
This page took 0.036012 seconds and 4 git commands to generate.