git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] mailinfo: extract is_from_line from mailsplit

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 25, 2016, 18:03 UTC
Message-ID
<xmqqmvl561ez.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<m2poq3zdu3.fsf@linux-m68k.org>
Andreas Schwab <schwab@linux-m68k.org> writes:
Show 26 quoted lines
>> +	colon = line + len - 2;
>> +	line += 5;
>> +	for (;;) {
>> +		if (colon < line)
>> +			return 0;
>> +		if (*--colon == ':')
>> +			break;
>> +	}
>> +
>> +	if (!isdigit(colon[-4]) ||
>> +	    !isdigit(colon[-2]) ||
>> +	    !isdigit(colon[-1]) ||
>> +	    !isdigit(colon[ 1]) ||
>> +	    !isdigit(colon[ 2]))
>> +		return 0;
>> +
>> +	/* year */
>> +	if (strtol(colon+3, NULL, 10) <= 90)
>> +		return 0;
>> +
>> +	/* Ok, close enough */
>> +	return 1;
>> +}
>
> Should this be made more strict, like by checking for a space before the
> year?

The function seems to judge the line to be "close enough" by checking these places (please view with fixed-width font ;-):

    From me Mon Jul 25 01:23:45 2016
    xxxxx               x xxxxx ....

We only see if the year part is more than 90 but we do not even ensure that it is at the end of the line without any further garbage, which I think is probably OK for the purpose of "close enough".

We also do not bother rejecting a single-digit hour, or there is a colon between the hour and minute part.

I would say requiring SP between the year and the second, and requiring colon between hour and minute, would probably be a good change, i.e. something like this:

	if (!isdigit(colon[-4]) ||
	    colon[-3] != ':' ||
	    !isdigit(colon[-2]) ||
	    !isdigit(colon[-1]) ||
	    !isdigit(colon[ 1]) ||
	    !isdigit(colon[ 2]) ||
	    colon[3] != ' ')

would be safe enough without increasing the false negatives too much.

Previous: Andreas SchwabNext: Eric Wong
Message 8 of 17 in “format-patch: escape "From " lines recognized by mailsplit”
  1. format-patch: escape "From " lines recognized by mailsplitEric Wong, Jul 22, 2016
  2. Johannes SchindelinJul 23, 2016
  3. Eric WongJul 24, 2016
  4. 1/2 mailinfo: extract is_from_line from mailsplitEric Wong, Jul 24, 2016
  5. Andreas SchwabJul 24, 2016
  6. Johannes SchindelinJul 24, 2016
  7. Andreas SchwabJul 24, 2016
  8. Junio C HamanoJul 25, 2016
  9. 2/2 format-patch: escape "From " lines recognized by mailsplitEric Wong, Jul 24, 2016
  10. Johannes SchindelinJul 24, 2016
  11. Jeff KingJul 24, 2016
  12. Junio C HamanoJul 24, 2016
  13. Eric WongJul 24, 2016
  14. Junio C HamanoJul 24, 2016
  15. Eric WongJul 25, 2016
  16. Junio C HamanoJul 25, 2016
  17. Eric WongJul 25, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.