From: Art Cancro Date: Tue, 26 Oct 2010 04:20:30 +0000 (-0400) Subject: Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel X-Git-Tag: v8.01~635 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=f50501010c1315dd44972c9fdec634c8d8e96928;hp=b0e75f49b52705fd73ec9318c3748e5b42a0f147;p=citadel.git Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel --- diff --git a/libcitadel/lib/mime_parser.c b/libcitadel/lib/mime_parser.c index 038851e21..a9089ccc7 100644 --- a/libcitadel/lib/mime_parser.c +++ b/libcitadel/lib/mime_parser.c @@ -163,7 +163,7 @@ int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen) { if (*(encoded + pos) == '\n') pos++; } - else if (encoded[pos] == '=') + else { ch = 0; ch = _decode_hex(&encoded[pos]); diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index a58f64043..2be17adfd 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -1275,12 +1275,15 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, StrBuf *ConversionBuffer) { wcsession *WCC = WC; + long len; + long totallen; CheckConvertBufs(WCC); - Msg->from = NewStrBufPlain(NULL, StrLength(Line)); - StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); - if (StrLength(ConversionBuffer) != 0) { + totallen = StrLength(Line); + Msg->from = NewStrBufPlain(NULL, totallen); + len = StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); + if (len > 0) { /* Handle senders with RFC2047 encoding */ StrBuf_RFC822_2_Utf8(Msg->from, ConversionBuffer, @@ -1291,9 +1294,9 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, } /* node name */ - StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); - if ((StrLength(ConversionBuffer) !=0 ) && - ( ((WCC->CurRoom.QRFlags & QR_NETWORK) + len = StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); + if ((len > 0 ) && + ( ((WCC->CurRoom.QRFlags & QR_NETWORK) || ((strcasecmp(ChrPtr(ConversionBuffer), ChrPtr(WCC->serv_info->serv_nodename)) && (strcasecmp(ChrPtr(ConversionBuffer), ChrPtr(WCC->serv_info->serv_fqdn)))))))) { @@ -1305,7 +1308,7 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, * StrBufExtract_token(Msg->inetaddr, Line, 4, '|'); */ StrBufSkip_NTokenS(Line, pos, '|', 1); - Msg->subj = NewStrBufPlain(NULL, StrLength(Line)); + Msg->subj = NewStrBufPlain(NULL, totallen); FlushStrBuf(ConversionBuffer); /* we assume the subject is the last parameter inside of the list; @@ -1313,17 +1316,17 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, * on tokenizer chars inside of the subjects StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); */ + len = 0; if (*pos != StrBufNOTNULL) { - StrBufPlain(ConversionBuffer, *pos, - StrLength(Line) - (*pos - ChrPtr(Line))); + len = totallen - (*pos - ChrPtr(Line)); + StrBufPlain(ConversionBuffer, *pos, len); *pos = StrBufNOTNULL; - if ((StrLength(ConversionBuffer) > 0) && - (*(ChrPtr(ConversionBuffer) + - StrLength(ConversionBuffer) - 1) == '|')) + if ((len > 0) && + (*(ChrPtr(ConversionBuffer) + len - 1) == '|')) StrBufCutRight(ConversionBuffer, 1); } - if (StrLength(ConversionBuffer) == 0) + if (len == 0) StrBufAppendBufPlain(Msg->subj, _("(no subject)"), -1,0); else { StrBuf_RFC822_2_Utf8(Msg->subj,