Skip to content

Commit

Permalink
More accurately detect header lines in read_one_header_line
Browse files Browse the repository at this point in the history
Only count lines of the form '^.*: ' and '^From ' as email
header lines.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Eric W. Biederman authored and Junio C Hamano committed May 23, 2006
1 parent 1f36bee commit f30b202
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions mailinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -385,20 +385,29 @@ static int read_one_header_line(char *line, int sz, FILE *in)
{
int ofs = 0;
while (ofs < sz) {
const char *colon;
int peek, len;
if (fgets(line + ofs, sz - ofs, in) == NULL)
return ofs;
break;
len = eatspace(line + ofs);
if (len == 0)
return ofs;
peek = fgetc(in); ungetc(peek, in);
if (peek == ' ' || peek == '\t') {
/* Yuck, 2822 header "folding" */
ofs += len;
continue;
break;
colon = strchr(line, ':');
if (!colon || !isspace(colon[1])) {
/* Re-add the newline */
line[ofs + len] = '\n';
line[ofs + len + 1] = '\0';
break;
}
return ofs + len;
ofs += len;
/* Yuck, 2822 header "folding" */
peek = fgetc(in); ungetc(peek, in);
if (peek != ' ' && peek != '\t')
break;
}
/* Count mbox From headers as headers */
if (!ofs && !memcmp(line, "From ", 5))
ofs = 1;
return ofs;
}

Expand Down

0 comments on commit f30b202

Please sign in to comment.