1 --- cyrus-imapd-2.2.6/imap/message.c.acceptinvalidfrom 2004-10-30 15:03:02.220642392 -0700
2 +++ cyrus-imapd-2.2.6/imap/message.c 2004-10-30 15:06:01.838336352 -0700
4 int reject8bit = config_getswitch(IMAPOPT_REJECT8BIT);
5 int munge8bit = config_getswitch(IMAPOPT_MUNGE8BIT);
6 int inheader = 1, blankline = 1;
8 + static const char * from_header = "From ";
11 n = prot_read(from, buf, size > 4096 ? 4096 : size);
13 /* Check for valid header name */
14 if (sawnl && buf[0] != ' ' && buf[0] != '\t') {
15 if (buf[0] == ':') return IMAP_MESSAGE_BADHEADER;
16 - for (p = (unsigned char *)buf; *p != ':'; p++) {
17 - if (*p <= ' ') return IMAP_MESSAGE_BADHEADER;
18 + p = (unsigned char *) buf;
21 + if (*p == from_header[0])
25 + for (; *p != ':' && is_from < 5; p++) {
26 + if (is_from > 0 && *p != from_header[is_from])
31 + if (*p <= ' ') return IMAP_MESSAGE_BADHEADER;