Subject: Re: [PATCH] mailinfo: avoid violating strbuf assertion

From: Don Zickus <[email-masked]>
Date: Wed, 20 Aug 2008 14:34:59 -0400

On Tue, Aug 19, 2008 at 01:28:24PM -0400, Jeff King wrote:
> In handle_from, we calculate the end boundary of a section
> to remove from a strbuf using strcspn like this:
> 
>   el = strcspn(buf, set_of_end_boundaries);
>   strbuf_remove(&sb, start, el + 1);
> 
> This works fine if "el" is the offset of the boundary
> character, meaning we remove up to and including that
> character. But if the end boundary didn't match (that is, we
> hit the end of the string as the boundary instead) then we
> want just "el". Asking for "el+1" caught an out-of-bounds
> assertion in the strbuf library.
> 
> This manifested itself when we got a 'From' header that had
> just an email address with nothing else in it (the end of
> the string was the end of the address, rather than, e.g., a
> trailing '>' character), causing git-mailinfo to barf.

Odd, I just ran into this myself today too.  Wonder if we share the same
culprit.. :-)

Tested-by: Don Zickus <[email-masked]>