Msg->cm_fields[which] = *buf;
*buf = NULL;
if (length < 0) { // You can set the length to -1 to have CM_SetField measure it for you
- Msg->cm_lengths[which] = strlen(buf);
+ Msg->cm_lengths[which] = strlen(Msg->cm_fields[which]);
}
else {
Msg->cm_lengths[which] = length;
* using functions that are bounds-checked, and therefore we can
* make them substantially smaller than SIZ.
*/
- char suser[100];
- char luser[100];
- char fuser[100];
- char snode[100];
- char mid[100];
+ char suser[1024];
+ char luser[1024];
+ char fuser[1024];
+ char snode[1024];
+ char mid[1024];
syslog(LOG_DEBUG, "msgbase: CtdlOutputPreLoadedMsg(TheMessage=%s, %d, %d, %d, %d",
((TheMessage == NULL) ? "NULL" : "not null"),
strcpy(suser, "");
strcpy(luser, "");
strcpy(fuser, "");
+ strcpy(snode, "");
if (mode == MT_RFC822)
OutputRFC822MsgHeaders(
TheMessage,
* 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, strlen(CC->room.QRname));
+ CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1);
}
/* Perform "before save" hooks (aborting if any return nonzero) */
if (CC->logged_in) {
strcpy(bounce_to, CC->user.fullname);
}
- else {
+ else if (!IsEmptyStr(msg->cm_fields[eAuthor])){
strcpy(bounce_to, msg->cm_fields[eAuthor]);
}
recps->bounce_to = bounce_to;
CM_SetFieldLONG(msg, eVltMsgNum, newmsgid);
-
/* If this is private, local mail, make a copy in the
* recipient's mailbox and bump the reference count.
*/
- if ((recps != NULL) && (recps->num_local > 0))
- {
+ if ((recps != NULL) && (recps->num_local > 0)) {
char *pch;
int ntokens;
pch = recps->recp_local;
recps->recp_local = recipient;
ntokens = num_tokens(pch, '|');
- for (i=0; i<ntokens; ++i)
- {
+ for (i=0; i<ntokens; ++i) {
extract_token(recipient, pch, i, '|', sizeof recipient);
syslog(LOG_DEBUG, "msgbase: delivering private local mail to <%s>", recipient);
if (CtdlGetUser(&userbuf, recipient) == 0) {
}
if (collected_addresses != NULL) {
- aptr = (struct addresses_to_be_filed *)
- malloc(sizeof(struct addresses_to_be_filed));
- CtdlMailboxName(actual_rm, sizeof actual_rm,
- &CC->user, USERCONTACTSROOM);
+ aptr = (struct addresses_to_be_filed *) malloc(sizeof(struct addresses_to_be_filed));
+ CtdlMailboxName(actual_rm, sizeof actual_rm, &CC->user, USERCONTACTSROOM);
aptr->roomname = strdup(actual_rm);
aptr->collected_addresses = collected_addresses;
begin_critical_section(S_ATBF);
msg->cm_format_type = format_type;
if (!IsEmptyStr(from)) {
- CM_SetField(msg, eAuthor, from, strlen(from));
+ CM_SetField(msg, eAuthor, from, -1);
}
else if (!IsEmptyStr(fromaddr)) {
char *pAt;
- CM_SetField(msg, eAuthor, fromaddr, strlen(fromaddr));
+ CM_SetField(msg, eAuthor, fromaddr, -1);
pAt = strchr(msg->cm_fields[eAuthor], '@');
if (pAt != NULL) {
CM_CutFieldAt(msg, eAuthor, pAt - msg->cm_fields[eAuthor]);
msg->cm_fields[eAuthor] = strdup("Citadel");
}
- if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr, strlen(fromaddr));
- if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room, strlen(room));
+ if (!IsEmptyStr(fromaddr)) CM_SetField(msg, erFc822Addr, fromaddr, -1);
+ if (!IsEmptyStr(room)) CM_SetField(msg, eOriginalRoom, room, -1);
if (!IsEmptyStr(to)) {
- CM_SetField(msg, eRecipient, to, strlen(to));
+ CM_SetField(msg, eRecipient, to, -1);
recp = validate_recipients(to, NULL, 0);
}
if (!IsEmptyStr(subject)) {
- CM_SetField(msg, eMsgSubject, subject, strlen(subject));
+ CM_SetField(msg, eMsgSubject, subject, -1);
}
if (!IsEmptyStr(text)) {
- CM_SetField(msg, eMesageText, text, strlen(text));
+ CM_SetField(msg, eMesageText, text, -1);
}
long msgnum = CtdlSubmitMsg(msg, recp, room, 0);
CM_SetField(msg, eMessagePath, my_email, myelen);
}
else if (!IsEmptyStr(author->fullname)) {
- CM_SetField(msg, eMessagePath, author->fullname, strlen(author->fullname));
+ CM_SetField(msg, eMessagePath, author->fullname, -1);
}
convert_spaces_to_underscores(msg->cm_fields[eMessagePath]);
if (!!IsEmptyStr(CC->room.QRname)) {
if (CC->room.QRflags & QR_MAILBOX) { /* room */
- CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11], strlen(&CC->room.QRname[11]));
+ CM_SetField(msg, eOriginalRoom, &CC->room.QRname[11], -1);
}
else {
- CM_SetField(msg, eOriginalRoom, CC->room.QRname, strlen(CC->room.QRname));
+ CM_SetField(msg, eOriginalRoom, CC->room.QRname, -1);
}
}
CM_SetField(msg, erFc822Addr, my_email, myelen);
}
else if ( (author == &CC->user) && (!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, -1);
}
if (subject != NULL) {
msg->cm_magic = CTDLMESSAGE_MAGIC;
msg->cm_anon_type = MES_NORMAL;
msg->cm_format_type = 4;
- CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname));
- CM_SetField(msg, eOriginalRoom, req_room, strlen(req_room));
+ CM_SetField(msg, eAuthor, CC->user.fullname, -1);
+ CM_SetField(msg, eOriginalRoom, req_room, -1);
msg->cm_flags = flags;
CM_SetAsFieldSB(msg, eMesageText, &encoded_message);