From ea488d0875ba18ad5a86e95c9a46be9024fadb02 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Sun, 27 Aug 2023 00:04:57 -0400 Subject: [PATCH] CM_SetField() no longer accepts a length, just uses strdup() --- citadel/server/internet_addressing.c | 24 +++---- citadel/server/journaling.c | 10 +-- citadel/server/modules/blog/serv_blog.c | 4 +- .../server/modules/calendar/serv_calendar.c | 8 +-- citadel/server/modules/clamav/serv_virus.c | 4 +- .../server/modules/ctdlproto/serv_messages.c | 6 +- citadel/server/modules/imap/imap_misc.c | 7 +- citadel/server/modules/instmsg/serv_instmsg.c | 10 +-- .../modules/listdeliver/serv_listdeliver.c | 8 +-- citadel/server/modules/notes/serv_notes.c | 8 +-- .../server/modules/rssclient/serv_rssclient.c | 4 +- citadel/server/modules/smtp/serv_smtp.c | 18 ++--- citadel/server/modules/smtp/serv_smtpclient.c | 6 +- citadel/server/modules/smtp/smtp_util.c | 8 +-- citadel/server/modules/spam/serv_spam.c | 4 +- citadel/server/modules/vcard/serv_vcard.c | 12 ++-- citadel/server/modules/wiki/serv_wiki.c | 22 +++--- citadel/server/msgbase.c | 70 +++++++++---------- citadel/server/msgbase.h | 2 +- citadel/server/room_ops.c | 1 - citadel/utils/loadtest.c | 4 +- 21 files changed, 117 insertions(+), 123 deletions(-) diff --git a/citadel/server/internet_addressing.c b/citadel/server/internet_addressing.c index 05a77671b..e2bdd6ecf 100644 --- a/citadel/server/internet_addressing.c +++ b/citadel/server/internet_addressing.c @@ -865,35 +865,35 @@ int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) { syslog(LOG_DEBUG, "internet_addressing: converted to <%s@%s> (%s)", user, node, name); snprintf(addr, sizeof(addr), "%s@%s", user, node); if (CM_IsEmpty(msg, eAuthor) && !IsEmptyStr(name)) { - CM_SetField(msg, eAuthor, name, -1); + CM_SetField(msg, eAuthor, name); } if (CM_IsEmpty(msg, erFc822Addr) && !IsEmptyStr(addr)) { - CM_SetField(msg, erFc822Addr, addr, -1); + CM_SetField(msg, erFc822Addr, addr); } processed = 1; } else if (!strcasecmp(key, "Subject")) { if (CM_IsEmpty(msg, eMsgSubject)) - CM_SetField(msg, eMsgSubject, value, valuelen); + CM_SetField(msg, eMsgSubject, value); processed = 1; } else if (!strcasecmp(key, "List-ID")) { if (CM_IsEmpty(msg, eListID)) - CM_SetField(msg, eListID, value, valuelen); + CM_SetField(msg, eListID, value); processed = 1; } else if (!strcasecmp(key, "To")) { if (CM_IsEmpty(msg, eRecipient)) - CM_SetField(msg, eRecipient, value, valuelen); + CM_SetField(msg, eRecipient, value); processed = 1; } else if (!strcasecmp(key, "CC")) { if (CM_IsEmpty(msg, eCarbonCopY)) - CM_SetField(msg, eCarbonCopY, value, valuelen); + CM_SetField(msg, eCarbonCopY, value); processed = 1; } @@ -919,7 +919,7 @@ int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) { break; } - CM_SetField(msg, emessageId, pValue, pValueLen); + CM_SetField(msg, emessageId, pValue); } processed = 1; @@ -927,29 +927,29 @@ int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) { else if (!strcasecmp(key, "Return-Path")) { if (CM_IsEmpty(msg, eMessagePath)) - CM_SetField(msg, eMessagePath, value, valuelen); + CM_SetField(msg, eMessagePath, value); processed = 1; } else if (!strcasecmp(key, "Envelope-To")) { if (CM_IsEmpty(msg, eenVelopeTo)) - CM_SetField(msg, eenVelopeTo, value, valuelen); + CM_SetField(msg, eenVelopeTo, value); processed = 1; } else if (!strcasecmp(key, "References")) { - CM_SetField(msg, eWeferences, value, valuelen); + CM_SetField(msg, eWeferences, value); processed = 1; } else if (!strcasecmp(key, "Reply-To")) { - CM_SetField(msg, eReplyTo, value, valuelen); + CM_SetField(msg, eReplyTo, value); processed = 1; } else if (!strcasecmp(key, "In-reply-to")) { if (CM_IsEmpty(msg, eWeferences)) // References: supersedes In-reply-to: - CM_SetField(msg, eWeferences, value, valuelen); + CM_SetField(msg, eWeferences, value); processed = 1; } diff --git a/citadel/server/journaling.c b/citadel/server/journaling.c index 17127222f..77cd53e14 100644 --- a/citadel/server/journaling.c +++ b/citadel/server/journaling.c @@ -1,6 +1,6 @@ // Message journaling functions. // -// Copyright (c) 1987-2022 by the citadel.org team +// Copyright (c) 1987-2023 by the citadel.org team // // This program is open source software. Use, duplication, or disclosure // is subject to the terms of the GNU General Public License, version 3. @@ -111,18 +111,18 @@ void JournalRunQueueMsg(struct jnlq *jmsg) { journal_msg->cm_magic = CTDLMESSAGE_MAGIC; journal_msg->cm_anon_type = MES_NORMAL; journal_msg->cm_format_type = FMT_RFC822; - CM_SetField(journal_msg, eJournal, HKEY("is journal")); + CM_SetField(journal_msg, eJournal, "is journal"); if (!IsEmptyStr(jmsg->from)) { - CM_SetField(journal_msg, eAuthor, jmsg->from, -1); + CM_SetField(journal_msg, eAuthor, jmsg->from); } if (!IsEmptyStr(jmsg->rfca)) { - CM_SetField(journal_msg, erFc822Addr, jmsg->rfca, -1); + CM_SetField(journal_msg, erFc822Addr, jmsg->rfca); } if (!IsEmptyStr(jmsg->subj)) { - CM_SetField(journal_msg, eMsgSubject, jmsg->subj, -1); + CM_SetField(journal_msg, eMsgSubject, jmsg->subj); } mblen = snprintf(mime_boundary, sizeof(mime_boundary), diff --git a/citadel/server/modules/blog/serv_blog.c b/citadel/server/modules/blog/serv_blog.c index da9c199c0..fa1290936 100644 --- a/citadel/server/modules/blog/serv_blog.c +++ b/citadel/server/modules/blog/serv_blog.c @@ -1,6 +1,6 @@ // Support for blog rooms // -// Copyright (c) 1999-2022 by the citadel.org team +// Copyright (c) 1999-2023 by the citadel.org team // // This program is open source software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as published @@ -58,7 +58,7 @@ int blog_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { if (CM_IsEmpty(msg, eExclusiveID)) { char uuid[SIZ]; generate_uuid(uuid); - CM_SetField(msg, eExclusiveID, uuid, strlen(uuid)); + CM_SetField(msg, eExclusiveID, uuid); } // We also want to define a maximum length, whether we generated it or not. diff --git a/citadel/server/modules/calendar/serv_calendar.c b/citadel/server/modules/calendar/serv_calendar.c index b9a4d1faa..1bd2a45f7 100644 --- a/citadel/server/modules/calendar/serv_calendar.c +++ b/citadel/server/modules/calendar/serv_calendar.c @@ -3,7 +3,7 @@ * room on a Citadel server. It handles iCalendar objects using the * iTIP protocol. See RFCs 2445 and 2446. * - * Copyright (c) 1987-2022 by the citadel.org team + * Copyright (c) 1987-2023 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -134,8 +134,8 @@ void ical_write_to_cal(struct ctdluser *u, icalcomponent *cal) { msg->cm_magic = CTDLMESSAGE_MAGIC; msg->cm_anon_type = MES_NORMAL; msg->cm_format_type = 4; - CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname)); - CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname)); + CM_SetField(msg, eAuthor, CCC->user.fullname); + CM_SetField(msg, eOriginalRoom, CCC->room.QRname); MsgBody = NewStrBufPlain(NULL, serlen + 100); StrBufAppendBufPlain(MsgBody, HKEY("Content-type: text/calendar\r\n\r\n"), 0); @@ -2303,7 +2303,7 @@ void ical_obj_beforesave_backend(char *name, char *filename, char *partnum, if (p != NULL) { pch = icalproperty_get_comment(p); if (!IsEmptyStr(pch)) { - CM_SetField(msg, eExclusiveID, pch, strlen(pch)); + CM_SetField(msg, eExclusiveID, pch); syslog(LOG_DEBUG, "calendar: saving calendar UID <%s>", pch); } } diff --git a/citadel/server/modules/clamav/serv_virus.c b/citadel/server/modules/clamav/serv_virus.c index 5149988d3..9971331f9 100644 --- a/citadel/server/modules/clamav/serv_virus.c +++ b/citadel/server/modules/clamav/serv_virus.c @@ -4,7 +4,7 @@ * http://clamav.net (the ClamAV project is not in any way * affiliated with the Citadel project). * - * Copyright (c) 1987-2022 by the citadel.org team + * Copyright (c) 1987-2023 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -158,7 +158,7 @@ int clamd(struct CtdlMessage *msg, struct recptypes *recp) { } if (is_virus) { - CM_SetField(msg, eErrorMsg, HKEY("message rejected by virus filter")); + CM_SetField(msg, eErrorMsg, "message rejected by virus filter"); } bail: close(sock); diff --git a/citadel/server/modules/ctdlproto/serv_messages.c b/citadel/server/modules/ctdlproto/serv_messages.c index c5124aacd..13bb0c96b 100644 --- a/citadel/server/modules/ctdlproto/serv_messages.c +++ b/citadel/server/modules/ctdlproto/serv_messages.c @@ -1,6 +1,6 @@ // Message-related protocol commands for Citadel clients // -// Copyright (c) 1987-2022 by the citadel.org team +// Copyright (c) 1987-2023 by the citadel.org team // // This program is open source software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 3. @@ -227,7 +227,7 @@ void cmd_msgs(char *cmdbuf) { { tValueLen = extract_token(tvalue, buf, 1, '|', sizeof tvalue); if (tValueLen >= 0) { - CM_SetField(template, f, tvalue, tValueLen); + CM_SetField(template, f, tvalue); } } } @@ -635,7 +635,7 @@ void cmd_ent0(char *entargs) { // posting into a mailing list room? set the envelope from // to the actual mail address so others get a valid reply-to-header. if ((valid != NULL) && (valid->num_room == 1) && !IsEmptyStr(valid->recp_orgroom)) { - CM_SetField(msg, eenVelopeTo, valid->recp_orgroom, strlen(valid->recp_orgroom)); + CM_SetField(msg, eenVelopeTo, valid->recp_orgroom); } if (msg != NULL) { diff --git a/citadel/server/modules/imap/imap_misc.c b/citadel/server/modules/imap/imap_misc.c index e5efc0f1e..2351d618a 100644 --- a/citadel/server/modules/imap/imap_misc.c +++ b/citadel/server/modules/imap/imap_misc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1987-2020 by the citadel.org team + * Copyright (c) 1987-2023 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -364,9 +364,8 @@ void imap_append(int num_parms, ConstStr *Params) { * show up as the real sender. (Configurable setting) */ if (CC->logged_in) { - if ( ((CC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0)) - { - CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname)); + if ( ((CC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0)) { + CM_SetField(msg, eAuthor, CC->user.fullname); } } diff --git a/citadel/server/modules/instmsg/serv_instmsg.c b/citadel/server/modules/instmsg/serv_instmsg.c index afb9e5b8e..cc9395377 100644 --- a/citadel/server/modules/instmsg/serv_instmsg.c +++ b/citadel/server/modules/instmsg/serv_instmsg.c @@ -1,6 +1,6 @@ // This module handles instant messaging between users. // -// Copyright (c) 1987-2022 by the citadel.org team +// Copyright (c) 1987-2023 by the citadel.org team // // This program is open source software. Use, duplication, or disclosure // is subject to the terms of the GNU General Public License, version 3. @@ -404,16 +404,16 @@ void flush_individual_conversation(struct imlog *im) { msg->cm_anon_type = MES_NORMAL; msg->cm_format_type = FMT_RFC822; if (!IsEmptyStr(im->usernames[0])) { - CM_SetField(msg, eAuthor, im->usernames[0], strlen(im->usernames[0])); + CM_SetField(msg, eAuthor, im->usernames[0]); } else { - CM_SetField(msg, eAuthor, HKEY("Citadel")); + CM_SetField(msg, eAuthor, "Citadel"); } if (!IsEmptyStr(im->usernames[1])) { - CM_SetField(msg, eRecipient, im->usernames[1], strlen(im->usernames[1])); + CM_SetField(msg, eRecipient, im->usernames[1]); } - CM_SetField(msg, eOriginalRoom, HKEY(PAGELOGROOM)); + CM_SetField(msg, eOriginalRoom, PAGELOGROOM); CM_SetAsFieldSB(msg, eMesageText, &FullMsgBuf); /* we own this memory now */ // Start with usernums[1] because it's guaranteed to be higher than usernums[0], diff --git a/citadel/server/modules/listdeliver/serv_listdeliver.c b/citadel/server/modules/listdeliver/serv_listdeliver.c index dc8f43396..aff0453bb 100644 --- a/citadel/server/modules/listdeliver/serv_listdeliver.c +++ b/citadel/server/modules/listdeliver/serv_listdeliver.c @@ -1,6 +1,6 @@ // This module delivers messages to mailing lists. // -// Copyright (c) 2002-2022 by the citadel.org team +// Copyright (c) 2002-2023 by the citadel.org team // // This program is open source software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 3. @@ -66,7 +66,7 @@ void listdeliver_do_msg(long msgnum, void *userdata) { // If the subject line does not contain the name of the room, add it now. if (!bmstrcasestr(TheMessage->cm_fields[eMsgSubject], CC->room.QRname)) { snprintf(buf, sizeof buf, "[%s] %s", CC->room.QRname, TheMessage->cm_fields[eMsgSubject]); - CM_SetField(TheMessage, eMsgSubject, buf, strlen(buf)); + CM_SetField(TheMessage, eMsgSubject, buf); } // From: should be set to the list address because doing otherwise makes DKIM parsers angry. @@ -75,8 +75,8 @@ void listdeliver_do_msg(long msgnum, void *userdata) { for (ch=buf; *ch; ++ch) { if (isspace(*ch)) *ch = '_'; } - CM_SetField(TheMessage, erFc822Addr, buf, strlen(buf)); - CM_SetField(TheMessage, eReplyTo, buf, strlen(buf)); + CM_SetField(TheMessage, erFc822Addr, buf); + CM_SetField(TheMessage, eReplyTo, buf); // With that out of the way, let's figure out who this message needs to be sent to. char *recipients = malloc(strlen(ld->netconf)); diff --git a/citadel/server/modules/notes/serv_notes.c b/citadel/server/modules/notes/serv_notes.c index f59bd8fe8..abc364e7e 100644 --- a/citadel/server/modules/notes/serv_notes.c +++ b/citadel/server/modules/notes/serv_notes.c @@ -1,7 +1,7 @@ /* * Handles functions related to yellow sticky notes. * - * Copyright (c) 2007-2022 by the citadel.org team + * Copyright (c) 2007-2023 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -102,7 +102,7 @@ int serv_notes_beforesave(struct CtdlMessage *msg, struct recptypes *recp) syslog(LOG_DEBUG, "UUID of note is: %s\n", uuid); if (!IsEmptyStr(uuid)) { - CM_SetField(msg, eExclusiveID, uuid, strlen(uuid)); + CM_SetField(msg, eExclusiveID, uuid); CM_CopyField(msg, eMsgSubject, eExclusiveID); } @@ -125,13 +125,13 @@ int serv_notes_beforesave(struct CtdlMessage *msg, struct recptypes *recp) if ((v->uid) && (!IsEmptyStr(v->uid))) { syslog(LOG_DEBUG, "UID of vNote is: %s\n", v->uid); - CM_SetField(msg, eExclusiveID, v->uid, strlen(v->uid)); + CM_SetField(msg, eExclusiveID, v->uid); } /* Set the message Subject to the vNote Summary */ if ((v->summary) && (!IsEmptyStr(v->summary))) { - CM_SetField(msg, eMsgSubject, v->summary, strlen(v->summary)); + CM_SetField(msg, eMsgSubject, v->summary); if (msg->cm_lengths[eMsgSubject] > 72) { strcpy(&msg->cm_fields[eMsgSubject][68], "..."); diff --git a/citadel/server/modules/rssclient/serv_rssclient.c b/citadel/server/modules/rssclient/serv_rssclient.c index 673eae5f7..c1688cfd0 100644 --- a/citadel/server/modules/rssclient/serv_rssclient.c +++ b/citadel/server/modules/rssclient/serv_rssclient.c @@ -150,11 +150,11 @@ void rss_end_element(void *data, const char *el) { StrBufAppendBuf(TheMessage, TheMessage_Encoded, 0); FreeStrBuf(&TheMessage_Encoded); - CM_SetField(r->msg, eMesageText, ChrPtr(TheMessage), StrLength(TheMessage)); + CM_SetField(r->msg, eMesageText, ChrPtr(TheMessage)); FreeStrBuf(&TheMessage); if (CM_IsEmpty(r->msg, eAuthor)) { - CM_SetField(r->msg, eAuthor, HKEY("rss")); + CM_SetField(r->msg, eAuthor, "rss"); } if (CM_IsEmpty(r->msg, eTimestamp)) { diff --git a/citadel/server/modules/smtp/serv_smtp.c b/citadel/server/modules/smtp/serv_smtp.c index 0c09e005f..f5bcab98c 100644 --- a/citadel/server/modules/smtp/serv_smtp.c +++ b/citadel/server/modules/smtp/serv_smtp.c @@ -19,7 +19,7 @@ // The VRFY and EXPN commands have been removed from this implementation // because nobody uses these commands anymore, except for spammers. // -// Copyright (c) 1998-2022 by the citadel.org team +// Copyright (c) 1998-2023 by the citadel.org team // // This program is open source software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 3. @@ -757,27 +757,27 @@ void smtp_data(void) { return; } - CM_SetField(msg, eOriginalRoom, HKEY(MAILROOM)); + CM_SetField(msg, eOriginalRoom, MAILROOM); if (SMTP->preferred_sender_name != NULL) - CM_SetField(msg, eAuthor, SKEY(SMTP->preferred_sender_name)); + CM_SetField(msg, eAuthor, ChrPtr(SMTP->preferred_sender_name)); else - CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname)); + CM_SetField(msg, eAuthor, CC->user.fullname); if (!validemail) { if (SMTP->preferred_sender_email != NULL) { - CM_SetField(msg, erFc822Addr, SKEY(SMTP->preferred_sender_email)); + CM_SetField(msg, erFc822Addr, ChrPtr(SMTP->preferred_sender_email)); } else { - CM_SetField(msg, erFc822Addr, CC->cs_inet_email, strlen(CC->cs_inet_email)); + CM_SetField(msg, erFc822Addr, CC->cs_inet_email); } } } // Set the "envelope from" address - CM_SetField(msg, eMessagePath, SKEY(SMTP->from)); + CM_SetField(msg, eMessagePath, ChrPtr(SMTP->from)); // Set the "envelope to" address - CM_SetField(msg, eenVelopeTo, SKEY(SMTP->recipients)); + CM_SetField(msg, eenVelopeTo, ChrPtr(SMTP->recipients)); // Submit the message into the Citadel system. valid = validate_recipients( @@ -799,7 +799,7 @@ void smtp_data(void) { if (scan_errors > 0) { // We don't want this message! if (CM_IsEmpty(msg, eErrorMsg)) { - CM_SetField(msg, eErrorMsg, HKEY("Message rejected by filter")); + CM_SetField(msg, eErrorMsg, "Message rejected by filter"); } StrBufPrintf(SMTP->OneRcpt, "550 %s\r\n", msg->cm_fields[eErrorMsg]); diff --git a/citadel/server/modules/smtp/serv_smtpclient.c b/citadel/server/modules/smtp/serv_smtpclient.c index 5bbc77d17..9d5867d56 100644 --- a/citadel/server/modules/smtp/serv_smtpclient.c +++ b/citadel/server/modules/smtp/serv_smtpclient.c @@ -105,9 +105,9 @@ int smtp_aftersave(struct CtdlMessage *msg, struct recptypes *recps) { imsg->cm_magic = CTDLMESSAGE_MAGIC; imsg->cm_anon_type = MES_NORMAL; imsg->cm_format_type = FMT_RFC822; - CM_SetField(imsg, eMsgSubject, HKEY("QMSG")); - CM_SetField(imsg, eAuthor, HKEY("Citadel")); - CM_SetField(imsg, eJournal, HKEY("do not journal")); + CM_SetField(imsg, eMsgSubject, "QMSG"); + CM_SetField(imsg, eAuthor, "Citadel"); + CM_SetField(imsg, eJournal, "do not journal"); CM_SetAsFieldSB(imsg, eMesageText, &SpoolMsg); last_queue_job_submitted = CtdlSubmitMsg(imsg, NULL, SMTP_SPOOLOUT_ROOM); CM_Free(imsg); diff --git a/citadel/server/modules/smtp/smtp_util.c b/citadel/server/modules/smtp/smtp_util.c index 27d239b64..6e4352da9 100644 --- a/citadel/server/modules/smtp/smtp_util.c +++ b/citadel/server/modules/smtp/smtp_util.c @@ -1,7 +1,7 @@ /* * Utility functions for the Citadel SMTP implementation * - * Copyright (c) 1998-2021 by the citadel.org team + * Copyright (c) 1998-2023 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -104,9 +104,9 @@ void smtp_do_bounce(const char *instr, int is_final) { bmsg->cm_magic = CTDLMESSAGE_MAGIC; bmsg->cm_anon_type = MES_NORMAL; bmsg->cm_format_type = FMT_RFC822; - CM_SetField(bmsg, eAuthor, HKEY("Citadel")); - CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM)); - CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)")); + CM_SetField(bmsg, eAuthor, "Citadel"); + CM_SetField(bmsg, eOriginalRoom, MAILROOM); + CM_SetField(bmsg, eMsgSubject, "Delivery Status Notification (Failure)"); StrBufAppendBufPlain(BounceMB, HKEY("Content-type: multipart/mixed; boundary=\""), 0); StrBufAppendBuf(BounceMB, boundary, 0); StrBufAppendBufPlain(BounceMB, HKEY("\"\r\n"), 0); diff --git a/citadel/server/modules/spam/serv_spam.c b/citadel/server/modules/spam/serv_spam.c index cc6272f31..88e0a4b3e 100644 --- a/citadel/server/modules/spam/serv_spam.c +++ b/citadel/server/modules/spam/serv_spam.c @@ -1,6 +1,6 @@ // This module allows Citadel to use an external SpamAssassin service to filter incoming messages arriving via SMTP. // -// Copyright (c) 1998-2022 by the citadel.org team +// Copyright (c) 1998-2023 by the citadel.org team // // This program is open source software. Use, duplication, or disclosure // is subject to the terms of the GNU General Public License, version 3. @@ -139,7 +139,7 @@ int spam_assassin(struct CtdlMessage *msg, struct recptypes *recp) { } if (is_spam) { - CM_SetField(msg, eErrorMsg, HKEY("message rejected by spam filter")); + CM_SetField(msg, eErrorMsg, "message rejected by spam filter"); } } diff --git a/citadel/server/modules/vcard/serv_vcard.c b/citadel/server/modules/vcard/serv_vcard.c index 599a1e858..af831b78d 100644 --- a/citadel/server/modules/vcard/serv_vcard.c +++ b/citadel/server/modules/vcard/serv_vcard.c @@ -245,7 +245,7 @@ int vcard_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { // Make the author of the message the name of the user. if (!IsEmptyStr(usbuf.fullname)) { - CM_SetField(msg, eAuthor, usbuf.fullname, strlen(usbuf.fullname)); + CM_SetField(msg, eAuthor, usbuf.fullname); } } @@ -268,7 +268,7 @@ int vcard_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { snprintf(buf, sizeof buf, VCARD_EXT_FORMAT, msg->cm_fields[eAuthor], NODENAME); } else { - // If the vCard has no UID, then give it one. */ + // If the vCard has no UID, then give it one. generate_uuid(buf); } vcard_set_prop(v, "UID", buf, 0); @@ -282,7 +282,7 @@ int vcard_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { s = vcard_get_prop(v, "UID", 1, 0, 0); if (!IsEmptyStr(s)) { - CM_SetField(msg, eExclusiveID, s, strlen(s)); + CM_SetField(msg, eExclusiveID, s); if (CM_IsEmpty(msg, eMsgSubject)) { CM_CopyField(msg, eMsgSubject, eExclusiveID); } @@ -296,7 +296,7 @@ int vcard_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { s = vcard_get_prop(v, "N", 1, 0, 0); } if (!IsEmptyStr(s)) { - CM_SetField(msg, eMsgSubject, s, strlen(s)); + CM_SetField(msg, eMsgSubject, s); } /* Re-serialize it back into the msg body */ @@ -1071,10 +1071,10 @@ void store_this_ha(struct addresses_to_be_filed *aptr) { vmsg->cm_magic = CTDLMESSAGE_MAGIC; vmsg->cm_anon_type = MES_NORMAL; vmsg->cm_format_type = FMT_RFC822; - CM_SetField(vmsg, eAuthor, HKEY("Citadel")); + CM_SetField(vmsg, eAuthor, "Citadel"); s = vcard_get_prop(v, "UID", 1, 0, 0); if (!IsEmptyStr(s)) { - CM_SetField(vmsg, eExclusiveID, s, strlen(s)); + CM_SetField(vmsg, eExclusiveID, s); } ser = vcard_serialize(v); if (ser != NULL) { diff --git a/citadel/server/modules/wiki/serv_wiki.c b/citadel/server/modules/wiki/serv_wiki.c index 6ab11651b..d7d579742 100644 --- a/citadel/server/modules/wiki/serv_wiki.c +++ b/citadel/server/modules/wiki/serv_wiki.c @@ -1,7 +1,7 @@ /* * Server-side module for Wiki rooms. This handles things like version control. * - * Copyright (c) 2009-2022 by the citadel.org team + * Copyright (c) 2009-2023 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. @@ -221,13 +221,13 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, struct recptypes *recp) { history_msg->cm_magic = CTDLMESSAGE_MAGIC; history_msg->cm_anon_type = MES_NORMAL; history_msg->cm_format_type = FMT_RFC822; - CM_SetField(history_msg, eAuthor, HKEY("Citadel")); + CM_SetField(history_msg, eAuthor, "Citadel"); if (!IsEmptyStr(CC->room.QRname)){ - CM_SetField(history_msg, eRecipient, CC->room.QRname, strlen(CC->room.QRname)); + CM_SetField(history_msg, eRecipient, CC->room.QRname); } - CM_SetField(history_msg, eExclusiveID, history_page, history_page_len); - CM_SetField(history_msg, eMsgSubject, history_page, history_page_len); - CM_SetField(history_msg, eSuppressIdx, HKEY("1")); /* suppress full text indexing */ + CM_SetField(history_msg, eExclusiveID, history_page); + CM_SetField(history_msg, eMsgSubject, history_page); + CM_SetField(history_msg, eSuppressIdx, "1"); /* suppress full text indexing */ snprintf(boundary, sizeof boundary, "Citadel--Multipart--%04x--%08lx", getpid(), time(NULL)); buf = (char*) malloc(1024); len = snprintf(buf, 1024, @@ -617,7 +617,7 @@ void wiki_rev(char *pagename, char *rev, char *operation) msgnum = (-1L); } else if (!strcasecmp(operation, "fetch")) { - CM_SetField(msg, eAuthor, HKEY("Citadel")); + CM_SetField(msg, eAuthor, "Citadel"); CtdlCreateRoom(wwm, 5, "", 0, 1, 1, VIEW_BBS); /* Not an error if already exists */ msgnum = CtdlSubmitMsg(msg, NULL, wwm); /* Store the revision here */ @@ -642,19 +642,19 @@ void wiki_rev(char *pagename, char *rev, char *operation) else if (!strcasecmp(operation, "revert")) { CM_SetFieldLONG(msg, eTimestamp, time(NULL)); if (!IsEmptyStr(CC->user.fullname)) { - CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname)); + CM_SetField(msg, eAuthor, CC->user.fullname); } if (!IsEmptyStr(CC->cs_inet_email)) { - CM_SetField(msg, erFc822Addr, CC->cs_inet_email, strlen(CC->cs_inet_email)); + CM_SetField(msg, erFc822Addr, CC->cs_inet_email); } if (!IsEmptyStr(CC->room.QRname)) { - CM_SetField(msg, eOriginalRoom, CC->room.QRname, strlen(CC->room.QRname)); + CM_SetField(msg, eOriginalRoom, CC->room.QRname); } if (!IsEmptyStr(pagename)) { - CM_SetField(msg, eExclusiveID, pagename, strlen(pagename)); + CM_SetField(msg, eExclusiveID, pagename); } msgnum = CtdlSubmitMsg(msg, NULL, ""); /* Replace the current revision */ } diff --git a/citadel/server/msgbase.c b/citadel/server/msgbase.c index c6c40a560..7ed1b8c36 100644 --- a/citadel/server/msgbase.c +++ b/citadel/server/msgbase.c @@ -134,17 +134,12 @@ int CM_IsEmpty(struct CtdlMessage *Msg, eMsgField which) { } -void CM_SetField(struct CtdlMessage *Msg, eMsgField which, const char *buf, long length) { +void CM_SetField(struct CtdlMessage *Msg, eMsgField which, const char *buf) { if (Msg->cm_fields[which] != NULL) { - free (Msg->cm_fields[which]); - } - if (length < 0) { // You can set the length to -1 to have CM_SetField measure it for you - length = strlen(buf); + free(Msg->cm_fields[which]); } - Msg->cm_fields[which] = malloc(length + 1); - memcpy(Msg->cm_fields[which], buf, length); - Msg->cm_fields[which][length] = '\0'; - Msg->cm_lengths[which] = length; + Msg->cm_fields[which] = strdup(buf); + Msg->cm_lengths[which] = strlen(buf); } @@ -152,7 +147,7 @@ void CM_SetFieldLONG(struct CtdlMessage *Msg, eMsgField which, long lvalue) { char buf[128]; long len; len = snprintf(buf, sizeof(buf), "%ld", lvalue); - CM_SetField(Msg, which, buf, len); + CM_SetField(Msg, which, buf); } @@ -234,6 +229,7 @@ void CM_PrependToField(struct CtdlMessage *Msg, eMsgField which, const char *buf } +// wtf? void CM_SetAsField(struct CtdlMessage *Msg, eMsgField which, char **buf, long length) { if (Msg->cm_fields[which] != NULL) { free (Msg->cm_fields[which]); @@ -1081,7 +1077,7 @@ struct CtdlMessage *CtdlDeserializeMessage(long msgnum, int with_body, const cha which = field_header; len = strlen(mptr); - CM_SetField(ret, which, mptr, len); + CM_SetField(ret, which, mptr); mptr += len + 1; // advance to next field @@ -1130,7 +1126,7 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body) { } } if (CM_IsEmpty(ret, eMesageText)) { - CM_SetField(ret, eMesageText, HKEY("\r\n\r\n (no text)\r\n")); + CM_SetField(ret, eMesageText, "\r\n\r\n (no text)\r\n"); } return (ret); @@ -2425,7 +2421,7 @@ long send_message(struct CtdlMessage *msg) { CtdlGetConfigStr("c_fqdn") ); - CM_SetField(msg, emessageId, msgidbuf, msgidbuflen); + CM_SetField(msg, emessageId, msgidbuf); } retval = CtdlSaveThisMessage(msg, newmsgid, 1); @@ -2574,7 +2570,7 @@ long CtdlSubmitMsg(struct CtdlMessage *msg, /* message to save */ } } else { - CM_SetField(msg, eMessagePath, HKEY("unknown")); + CM_SetField(msg, eMessagePath, "unknown"); } } @@ -2650,7 +2646,7 @@ long CtdlSubmitMsg(struct CtdlMessage *msg, /* message to save */ * If this message has no O (room) field, generate one. */ if (CM_IsEmpty(msg, eOriginalRoom) && !IsEmptyStr(CC->room.QRname)) { - CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1); + CM_SetField(msg, eOriginalRoom, CC->room.QRname); } /* Perform "before save" hooks (aborting if any return nonzero) */ @@ -2859,11 +2855,11 @@ long quickie_message(char *from, msg->cm_format_type = format_type; if (!IsEmptyStr(from)) { - CM_SetField(msg, eAuthor, from, -1); + CM_SetField(msg, eAuthor, from); } else if (!IsEmptyStr(fromaddr)) { char *pAt; - CM_SetField(msg, eAuthor, fromaddr, -1); + CM_SetField(msg, eAuthor, fromaddr); pAt = strchr(msg->cm_fields[eAuthor], '@'); if (pAt != NULL) { CM_CutFieldAt(msg, eAuthor, pAt - msg->cm_fields[eAuthor]); @@ -2873,17 +2869,17 @@ long quickie_message(char *from, msg->cm_fields[eAuthor] = strdup("Citadel"); } - if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr, -1); - if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room, -1); + if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr); + if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room); if (!IsEmptyStr(to)) { - CM_SetField(msg, eRecipient, to, -1); + CM_SetField(msg, eRecipient, to); recp = validate_recipients(to, NULL, 0); } if (!IsEmptyStr(subject)) { - CM_SetField(msg, eMsgSubject, subject, -1); + CM_SetField(msg, eMsgSubject, subject); } if (!IsEmptyStr(text)) { - CM_SetField(msg, eMesageText, text, -1); + CM_SetField(msg, eMesageText, text); } long msgnum = CtdlSubmitMsg(msg, recp, room); @@ -3071,15 +3067,15 @@ struct CtdlMessage *CtdlMakeMessageLen( /* Path or Return-Path */ if (myelen > 0) { - CM_SetField(msg, eMessagePath, my_email, myelen); + CM_SetField(msg, eMessagePath, my_email); } else if (!IsEmptyStr(author->fullname)) { - CM_SetField(msg, eMessagePath, author->fullname, -1); + CM_SetField(msg, eMessagePath, author->fullname); } convert_spaces_to_underscores(msg->cm_fields[eMessagePath]); blen = snprintf(buf, sizeof buf, "%ld", (long)time(NULL)); - CM_SetField(msg, eTimestamp, buf, blen); + CM_SetField(msg, eTimestamp, buf); if (fnlen > 0) { FakeAuthor = NewStrBufPlain (fake_name, fnlen); @@ -3093,25 +3089,25 @@ struct CtdlMessage *CtdlMakeMessageLen( if (!!IsEmptyStr(CC->room.QRname)) { if (CC->room.QRflags & QR_MAILBOX) { /* room */ - CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11], -1); + CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11]); } else { - CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1); + CM_SetField(msg, eOriginalRoom, CC->room.QRname); } } if (rcplen > 0) { - CM_SetField(msg, eRecipient, recipient, rcplen); + CM_SetField(msg, eRecipient, recipient); } if (cclen > 0) { - CM_SetField(msg, eCarbonCopY, recp_cc, cclen); + CM_SetField(msg, eCarbonCopY, recp_cc); } if (myelen > 0) { - CM_SetField(msg, erFc822Addr, my_email, myelen); + CM_SetField(msg, erFc822Addr, my_email); } else if ( (author == &CC->user) && (!IsEmptyStr(CC->cs_inet_email)) ) { - CM_SetField(msg, erFc822Addr, CC->cs_inet_email, -1); + CM_SetField(msg, erFc822Addr, CC->cs_inet_email); } if (subject != NULL) { @@ -3126,7 +3122,7 @@ struct CtdlMessage *CtdlMakeMessageLen( (IsAscii = isascii(subject[i]) != 0 )) i++; if (IsAscii != 0) - CM_SetField(msg, eMsgSubject, subject, subjlen); + CM_SetField(msg, eMsgSubject, subject); else /* ok, we've got utf8 in the string. */ { char *rfc2047Subj; @@ -3138,15 +3134,15 @@ struct CtdlMessage *CtdlMakeMessageLen( } if (euidlen > 0) { - CM_SetField(msg, eExclusiveID, supplied_euid, euidlen); + CM_SetField(msg, eExclusiveID, supplied_euid); } if (reflen > 0) { - CM_SetField(msg, eWeferences, references, reflen); + CM_SetField(msg, eWeferences, references); } if (preformatted_text != NULL) { - CM_SetField(msg, eMesageText, preformatted_text, textlen); + CM_SetField(msg, eMesageText, preformatted_text); } else { StrBuf *MsgBody; @@ -3424,8 +3420,8 @@ long CtdlWriteObject(char *req_room, // Room to stuff it in msg->cm_magic = CTDLMESSAGE_MAGIC; msg->cm_anon_type = MES_NORMAL; msg->cm_format_type = 4; - CM_SetField(msg, eAuthor, CC->user.fullname, -1); - CM_SetField(msg, eOriginalRoom, req_room, -1); + CM_SetField(msg, eAuthor, CC->user.fullname); + CM_SetField(msg, eOriginalRoom, req_room); msg->cm_flags = flags; CM_SetAsFieldSB(msg, eMesageText, &encoded_message); diff --git a/citadel/server/msgbase.h b/citadel/server/msgbase.h index 6ccb93b1b..2fa5c7414 100644 --- a/citadel/server/msgbase.h +++ b/citadel/server/msgbase.h @@ -108,7 +108,7 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body); struct CtdlMessage * CM_Duplicate (struct CtdlMessage *OrgMsg); int CM_IsEmpty (struct CtdlMessage *Msg, eMsgField which); -void CM_SetField (struct CtdlMessage *Msg, eMsgField which, const char *buf, long length); +void CM_SetField (struct CtdlMessage *Msg, eMsgField which, const char *buf); void CM_SetFieldLONG (struct CtdlMessage *Msg, eMsgField which, long lvalue); void CM_CopyField (struct CtdlMessage *Msg, eMsgField WhichToPutTo, eMsgField WhichtToCopy); void CM_CutFieldAt (struct CtdlMessage *Msg, eMsgField WhichToCut, long maxlen); diff --git a/citadel/server/room_ops.c b/citadel/server/room_ops.c index 804eb3bb6..cabaf96fd 100644 --- a/citadel/server/room_ops.c +++ b/citadel/server/room_ops.c @@ -605,7 +605,6 @@ int CtdlFetchMsgList(long roomnum, long **msgs) { cdbfr = cdb_fetch(CDB_MSGLISTS, &roomnum, sizeof(long)); if (cdbfr.ptr == NULL) { - syslog(LOG_ERR, "room_ops: no msglist for room %ld", roomnum); *msgs = malloc(sizeof(long)); // dummy buffer *msgs[0] = 0; return (0); diff --git a/citadel/utils/loadtest.c b/citadel/utils/loadtest.c index 76b6c895b..dff616940 100644 --- a/citadel/utils/loadtest.c +++ b/citadel/utils/loadtest.c @@ -229,7 +229,7 @@ void perform_random_thing(void) { serv_gets(buf); if (buf[0] == '4') { - bigness = random() % 500; + bigness = random() % 10; strcpy(buf, ""); for (i=0; i 0)); } } -- 2.39.2