]> andersk Git - moira.git/commitdiff
detect bad local strings & complain
authormar <mar>
Thu, 26 Mar 1992 21:59:07 +0000 (21:59 +0000)
committermar <mar>
Thu, 26 Mar 1992 21:59:07 +0000 (21:59 +0000)
clients/moira/lists.c

index 2f4e1bc1e96f251f410bde8e0057e5190a5f2030..69ae34a463075fe8b63dfd4c2f7d14ac35973e68 100644 (file)
@@ -616,12 +616,37 @@ char *action, **ret_argv;
 int
 AddMember()
 {
 int
 AddMember()
 {
-    char *args[10], temp_buf[BUFSIZ];
+    char *args[10], temp_buf[BUFSIZ], *p;
     register int status;
     register int status;
+    struct qelem *mailhubs, *elem, *GetTypeValues();
 
     if ( GetMemberInfo("add", args) == SUB_ERROR )
        return(DM_NORMAL);
 
 
     if ( GetMemberInfo("add", args) == SUB_ERROR )
        return(DM_NORMAL);
 
+    if (!strcmp(args[LM_TYPE], "STRING")) {
+       if (p = index(args[LM_MEMBER], '@')) {
+           char *host = canonicalize_hostname(strsave(++p));
+           mailhubs = GetTypeValues("mailhub");
+           for (elem = mailhubs; elem; elem = elem->q_forw) {
+               if (!strcasecmp(host, elem->q_data)) {
+                   free(host);
+                   host = strsave(args[LM_MEMBER]);
+                   *(--p) = 0;
+                   sprintf(temp_buf, "String \"%s\" should be USER or LIST \"%s\" because it is a local name.",
+                           host, args[LM_MEMBER]);
+                   Put_message(temp_buf);
+                   free(args[LM_TYPE]);
+                   free(host);
+                   return(DM_NORMAL);
+               }
+           }
+           free(host);
+       } else if (!index(args[LM_MEMBER], '!')) {
+           Put_message("Member which is not a foreign mail address should not be type STRING.");
+           return(DM_NORMAL);
+       }
+    }
+
     if ( (status = do_mr_query("add_member_to_list", CountArgs(args), args,
                           Scream, NULL)) != MR_SUCCESS) {
        if (status == MR_EXISTS) {
     if ( (status = do_mr_query("add_member_to_list", CountArgs(args), args,
                           Scream, NULL)) != MR_SUCCESS) {
        if (status == MR_EXISTS) {
This page took 0.037168 seconds and 5 git commands to generate.