CM_SetField() no longer accepts a length, just uses strdup()
authorArt Cancro <ajc@citadel.org>
Sun, 27 Aug 2023 04:04:57 +0000 (00:04 -0400)
committerArt Cancro <ajc@citadel.org>
Sun, 27 Aug 2023 04:04:57 +0000 (00:04 -0400)
21 files changed:
citadel/server/internet_addressing.c
citadel/server/journaling.c
citadel/server/modules/blog/serv_blog.c
citadel/server/modules/calendar/serv_calendar.c
citadel/server/modules/clamav/serv_virus.c
citadel/server/modules/ctdlproto/serv_messages.c
citadel/server/modules/imap/imap_misc.c
citadel/server/modules/instmsg/serv_instmsg.c
citadel/server/modules/listdeliver/serv_listdeliver.c
citadel/server/modules/notes/serv_notes.c
citadel/server/modules/rssclient/serv_rssclient.c
citadel/server/modules/smtp/serv_smtp.c
citadel/server/modules/smtp/serv_smtpclient.c
citadel/server/modules/smtp/smtp_util.c
citadel/server/modules/spam/serv_spam.c
citadel/server/modules/vcard/serv_vcard.c
citadel/server/modules/wiki/serv_wiki.c
citadel/server/msgbase.c
citadel/server/msgbase.h
citadel/server/room_ops.c
citadel/utils/loadtest.c

index 05a77671b8c952d81964eded68ebd76ab3410355..e2bdd6ecf00379eac9581001f31c2eab4b2f1aa2 100644 (file)
@@ -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;
        }
 
index 17127222f43bf2828e12c607078e787536fd1533..77cd53e1472972ac1e2a4a81861dd713a749b389 100644 (file)
@@ -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),
index da9c199c0697fdc1baa75a35583cfb8e24edc227..fa12909365d559f487549540fc45d9f1b4033059 100644 (file)
@@ -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.
index b9a4d1faa9ef03e4676c95f0f86f9e8908af1326..1bd2a45f74ddcc7f40b6896d19415dc8353d48e7 100644 (file)
@@ -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);
                                }
                        }
index 5149988d3b118e6638593c46bc8b1cb75fb1c484..9971331f9ca49c6e8f58b8d8a4a1411f7e308baa 100644 (file)
@@ -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);
index c5124aacddfa0157688deac5da1c9c8d834a9ada..13bb0c96b48f62b27b44f2caf329842e65fe38da 100644 (file)
@@ -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) {
index e5efc0f1e353e0a3bb9d15cb8d51e6c88e847537..2351d618a11939c8bae512c914f247b5c56cdb57 100644 (file)
@@ -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);
                }
        }
 
index afb9e5b8ece7887f2edd9a167a0053e6c2aa3353..cc93953776684fbc876b81ab1ee8384deb35b6da 100644 (file)
@@ -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],
index dc8f43396bb4f8820fd05aa74eea57d17e8be27b..aff0453bb63b8f8392d0697f5e00a626ce1bc4e7 100644 (file)
@@ -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));
index f59bd8fe8bef509e9f31523e41ee72efd3826522..abc364e7ea70b1025ba6f5fef1d98891efe56dfe 100644 (file)
@@ -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], "...");
index 673eae5f79eb3f81d62b9b6cec3b969cfe9d2e70..c1688cfd0580c3a6ccb42e06ecfabc1496f57f58 100644 (file)
@@ -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)) {
index 0c09e005f1b75066e3d7397b7fcadf4bd41587d1..f5bcab98c70abad7b1d78bda330717775340e4da 100644 (file)
@@ -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]);
index 5bbc77d1720007e582d8efc3423b5c34691cbd55..9d5867d564c533e65812cd248905a3293ddf86b3 100644 (file)
@@ -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);
index 27d239b647edc74220f70c7f636c78e0081e9838..6e4352da90240432c2f9c8750d3f7257b40d2fab 100644 (file)
@@ -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);
index cc6272f310a5024342e5a67bbb39e84c721a808c..88e0a4b3e75dbb1a901bc261d36e0ad676e4c5cc 100644 (file)
@@ -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");
                }
        }
 
index 599a1e8587e528908c0c7d4201086cd432359581..af831b78dcf289f85ffab65e9893a09d31566a4e 100644 (file)
@@ -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) {
index 6ab11651ba606a68dc54373f6a86738c38e03c7f..d7d579742c08be9de86f9b2edd59fbd07c917898 100644 (file)
@@ -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 */
                }
index c6c40a56010e0ba36f8bb949d16fe38eb378408f..7ed1b8c36541d7bd9ef3358971468685e72417fb 100644 (file)
@@ -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);
index 6ccb93b1b1069e1eddcfef0d9ed8d20b2a18d939..2fa5c7414c1ee6e59932708ceaca6dafa603c23f 100644 (file)
@@ -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);
index 804eb3bb62e2628e111d6c88a3aba188ed75e812..cabaf96fdaf3fdd279a29d6b7dab843c8c738170 100644 (file)
@@ -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);
index 76b6c895baab7f9eb094f3ad7db5fc27736e5f1d..dff616940e7d9281860273f29a9d40979eba740f 100644 (file)
@@ -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<bigness; ++i) {
                                strcat(buf, words[random() % nwords]);
@@ -267,7 +267,7 @@ void perform_random_thing(void) {
                        snprintf(buf, sizeof buf, "DELE %ld", selected_msg);
                        serv_puts(buf);
                        serv_gets(buf);
-               } while(buf[0] != '2');         // make sure we always delete exactly one message
+               } while ( (buf[0] != '2') && (total_msgs > 0));
        }
 
 }