View | Details | Raw Unified | Return to bug 4405
Collapse All | Expand All

(-)libspamc.c (-5 / +17 lines)
Lines 805-811 Link Here
805
    return EX_PROTOCOL;
805
    return EX_PROTOCOL;
806
}
806
}
807
807
808
int message_filter(struct transport *tp, const char *username,
808
int message_filter(struct transport *tp, const char *username, const char *userprefs,
809
		   int flags, struct message *m)
809
		   int flags, struct message *m)
810
{
810
{
811
    char buf[8192];
811
    char buf[8192];
Lines 880-885 Link Here
880
	strcat(buf + len, "\r\n");
880
	strcat(buf + len, "\r\n");
881
	len += strlen(buf + len);
881
	len += strlen(buf + len);
882
    }
882
    }
883
    if (userprefs != NULL) {
884
        if (strlen(userprefs) + 8 >= (bufsiz - len)) {
885
            free(m->out);
886
            m->out = m->msg;
887
            m->out_len = m->msg_len;
888
            return EX_OSERR;
889
        }
890
        strcpy(buf + len, "UserPrefs: ");
891
        strcat(buf + len, userprefs);
892
        strcat(buf + len, "\r\n");
893
        len += strlen(buf + len);
894
    }
883
    if ((m->msg_len > 9999999) || ((len + 27) >= (bufsiz - len))) {
895
    if ((m->msg_len > 9999999) || ((len + 27) >= (bufsiz - len))) {
884
	free(m->out);
896
	free(m->out);
885
	m->out = m->msg;
897
	m->out = m->msg;
Lines 1048-1054 Link Here
1048
}
1060
}
1049
1061
1050
1062
1051
int message_process(struct transport *trans, char *username, int max_size,
1063
int message_process(struct transport *trans, char *username, char *userprefs, int max_size,
1052
		    int in_fd, int out_fd, const int flags)
1064
		    int in_fd, int out_fd, const int flags)
1053
{
1065
{
1054
    int ret;
1066
    int ret;
Lines 1060-1066 Link Here
1060
    ret = message_read(in_fd, flags, &m);
1072
    ret = message_read(in_fd, flags, &m);
1061
    if (ret != EX_OK)
1073
    if (ret != EX_OK)
1062
	goto FAIL;
1074
	goto FAIL;
1063
    ret = message_filter(trans, username, flags, &m);
1075
    ret = message_filter(trans, username, userprefs, flags, &m);
1064
    if (ret != EX_OK)
1076
    if (ret != EX_OK)
1065
	goto FAIL;
1077
	goto FAIL;
1066
    if (message_write(out_fd, &m) < 0)
1078
    if (message_write(out_fd, &m) < 0)
Lines 1097-1103 Link Here
1097
}
1109
}
1098
1110
1099
/* Aug 14, 2002 bj: Obsolete! */
1111
/* Aug 14, 2002 bj: Obsolete! */
1100
int process_message(struct transport *tp, char *username, int max_size,
1112
int process_message(struct transport *tp, char *username, char *userprefs, int max_size,
1101
		    int in_fd, int out_fd, const int my_check_only,
1113
		    int in_fd, int out_fd, const int my_check_only,
1102
		    const int my_safe_fallback)
1114
		    const int my_safe_fallback)
1103
{
1115
{
Lines 1109-1115 Link Here
1109
    if (my_safe_fallback)
1121
    if (my_safe_fallback)
1110
	flags |= SPAMC_SAFE_FALLBACK;
1122
	flags |= SPAMC_SAFE_FALLBACK;
1111
1123
1112
    return message_process(tp, username, max_size, in_fd, out_fd, flags);
1124
    return message_process(tp, username, userprefs, max_size, in_fd, out_fd, flags);
1113
}
1125
}
1114
1126
1115
/*
1127
/*

Return to bug 4405