]> andersk Git - moira.git/blobdiff - server/qrtn.pc
Make sure acl_type is LIST before using the object id as a list_id.
[moira.git] / server / qrtn.pc
index bdb16f1619fc34f919df23c2e17267af1eef74dc..3bc74c4b96127675c5ff375dfc891832dc2a622e 100644 (file)
@@ -78,7 +78,7 @@ void dbmserr(void)
   sqlglm(err_msg, &bufsize, &msglength);
   err_msg[msglength] = 0;
   com_err(whoami, 0, "SQL error text = %s", err_msg);
-  critical_alert("MOIRA", "Moira server encountered DBMS ERROR %d\n%s",
+  critical_alert(whoami, "MOIRA", "Moira server encountered DBMS ERROR %d\n%s",
                 dbms_errno, err_msg);
 }
 
@@ -193,7 +193,7 @@ int mr_process_query(client *cl, char *name, int argc, char *argv_ro[],
 
   switch (q->type)
     {
-    case RETRIEVE:
+    case MR_Q_RETRIEVE:
       /* for queries that do not permit wildcarding, check if row
         uniquely exists */
       if (v && v->field)
@@ -245,7 +245,7 @@ int mr_process_query(client *cl, char *name, int argc, char *argv_ro[],
 
       break;
 
-    case UPDATE:
+    case MR_Q_UPDATE:
       /* see if row already exists */
       if (v->field)
        {
@@ -279,7 +279,7 @@ int mr_process_query(client *cl, char *name, int argc, char *argv_ro[],
 
       break;
 
-    case APPEND:
+    case MR_Q_APPEND:
       /* see if row already exists */
       if (v->field)
        {
@@ -322,7 +322,7 @@ int mr_process_query(client *cl, char *name, int argc, char *argv_ro[],
        status = (*v->post_rtn)(q, Argv, cl);
       break;
 
-    case DELETE:
+    case MR_Q_DELETE:
       /* see if row already exists */
       if (v->field)
        {
@@ -352,7 +352,7 @@ int mr_process_query(client *cl, char *name, int argc, char *argv_ro[],
        status = (*v->post_rtn)(q, Argv, cl);
       break;
 
-    case SPECIAL:
+    case MR_Q_SPECIAL:
       break;
     }
 
@@ -366,7 +366,7 @@ out:
       status = mr_errcode;
     }
 
-  if (q->type == RETRIEVE)
+  if (q->type == MR_Q_RETRIEVE)
     EXEC SQL COMMIT WORK;
   else
     {
@@ -545,7 +545,7 @@ int mr_verify_query(client *cl, struct query *q, int argc, char *argv_ro[])
 
   /* check argument count */
   argreq = q->argc;
-  if (q->type == UPDATE || q->type == APPEND)
+  if (q->type == MR_Q_UPDATE || q->type == MR_Q_APPEND)
     argreq += q->vcnt;
   if (argc != argreq)
     return MR_ARGS;
@@ -641,16 +641,20 @@ int find_member(char *list_type, int list_id, client *cl)
   if (!strcmp(strtrim(list_type), "KERBEROS") && list_id == -cl->client_id)
     return 1;
 
-  /* see if client is a member of list */
-  flag = 0;
-  users_id = cl->users_id;
-  client_id = -cl->client_id;
-  EXEC SQL SELECT COUNT(member_id) INTO :flag FROM imembers
-    WHERE list_id = :list_id
-    AND ( ( member_type = 'USER' AND member_id = :users_id )
-         OR (member_type = 'KERBEROS' AND member_id = :client_id ) );
-  if (sqlca.sqlcode == 0)
-    return flag;
+  if (!strcmp(strtrim(list_type), "LIST"))
+    {
+      /* see if client is a member of list */
+      flag = 0;
+      users_id = cl->users_id;
+      client_id = -cl->client_id;
+      EXEC SQL SELECT COUNT(member_id) INTO :flag FROM imembers
+       WHERE list_id = :list_id
+       AND ( ( member_type = 'USER' AND member_id = :users_id )
+             OR (member_type = 'KERBEROS' AND member_id = :client_id ) );
+      if (sqlca.sqlcode == 0)
+       return flag;
+    }
+
   return 0;
 }
 
@@ -757,7 +761,7 @@ int do_delete(struct query *q, char *qual,
  **        table - name of table objects are found in
  **        limit - should the ID be range limited
  **
- ** - called before an APPEND operation to set the next object id to
+ ** - called before an MR_Q_APPEND operation to set the next object id to
  **   be used for the new record to the next free value
  **
  **/
@@ -952,7 +956,7 @@ int do_for_all_rows(char *query, int count,
     return mr_errcode;
   if (rowcount == max_row_count)
     {
-      critical_alert("moirad", "attempted query with too many rows");
+      critical_alert(whoami, "moirad", "attempted query with too many rows");
       return MR_NO_MEM;
     }
   else if (rowcount == 0)
This page took 0.050183 seconds and 4 git commands to generate.