X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fspam%2Fserv_spam.c;fp=citadel%2Fmodules%2Fspam%2Fserv_spam.c;h=c0ced7eeb1dc86332c9439274c972e4ad0d09365;hb=848934c1722edc208c4df49c571586b72c3fc486;hp=f27e22441fdd55b07cc38e19ca200bd8fd485c65;hpb=11b27ee27a3d6d28e926e4ccd936dd10da17bb29;p=citadel.git diff --git a/citadel/modules/spam/serv_spam.c b/citadel/modules/spam/serv_spam.c index f27e22441..c0ced7eeb 100644 --- a/citadel/modules/spam/serv_spam.c +++ b/citadel/modules/spam/serv_spam.c @@ -143,35 +143,31 @@ int spam_assassin(struct CtdlMessage *msg) { syslog(LOG_DEBUG, "<%s\n", buf); syslog(LOG_DEBUG, "c_spam_flag_only setting %d\n", config.c_spam_flag_only); if (config.c_spam_flag_only) { - syslog(LOG_DEBUG, "flag spam code used"); int headerlen; - int newmsgsize; - int oldmsgsize; - + char *cur; char sastatus[10]; char sascore[10]; char saoutof[10]; int numscore; + syslog(LOG_DEBUG, "flag spam code used"); + extract_token(sastatus, buf, 1, ' ', sizeof sastatus); extract_token(sascore, buf, 3, ' ', sizeof sascore); extract_token(saoutof, buf, 5, ' ', sizeof saoutof); - sprintf(buf,"X-Spam-Level: "); - char *cur = buf + 14; + memcpy(buf, HKEY("X-Spam-Level: ")); + cur = buf + 14; for (numscore = atoi(sascore); numscore>0; numscore--) *(cur++) = '*'; *cur = '\0'; - sprintf(cur,"\r\nX-Spam-Status: %s, score=%s required=%s\r\n", sastatus, sascore, saoutof); - headerlen = strlen(buf); - oldmsgsize = strlen(msg->cm_fields[eMesageText]) + 1; - newmsgsize = headerlen + oldmsgsize; - - msg->cm_fields[eMesageText] = realloc(msg->cm_fields[eMesageText], newmsgsize); + headerlen = cur - buf; + headerlen += snprintf(cur, (sizeof(buf) - headerlen), + "\r\nX-Spam-Status: %s, score=%s required=%s\r\n", + sastatus, sascore, saoutof); - memmove(msg->cm_fields[eMesageText]+headerlen,msg->cm_fields[eMesageText],oldmsgsize); - memcpy(msg->cm_fields[eMesageText],buf,headerlen); + CM_PrependToField(msg, eMesageText, buf, headerlen); } else { syslog(LOG_DEBUG, "reject spam code used"); @@ -183,7 +179,7 @@ int spam_assassin(struct CtdlMessage *msg) { if (msg->cm_fields[eErrorMsg] != NULL) { free(msg->cm_fields[eErrorMsg]); } - msg->cm_fields[eErrorMsg] = strdup("message rejected by spam filter"); + CM_SetField(msg, eErrorMsg, HKEY("message rejected by spam filter")); } }