Hi,

I seem to remember other code guarantees that lines are always
termined by '\n'. Specifically plan_a(), plan_b() and ifetch();


        -Otto

On Tue, Nov 18, 2014 at 03:27:27PM +0100, Tobias Stoeckmann wrote:

> Hi,
> 
> on a diff with a missing new line, it is possible that patch will read
> past the terminating NUL character.
> 
> 
> Tobias
> 
> Index: pch.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/patch/pch.c,v
> retrieving revision 1.42
> diff -u -p -r1.42 pch.c
> --- pch.c     17 Nov 2014 10:58:09 -0000      1.42
> +++ pch.c     18 Nov 2014 14:25:31 -0000
> @@ -344,9 +344,9 @@ intuit_diff_type(void)
>                               ok_to_create_file = true;
>                       /*
>                        * If this is a new context diff the character just
> -                      * before the newline is a '*'.
> +                      * at the end of the line is a '*'.
>                        */
> -                     while (*s != '\n')
> +                     while (*s && *s != '\n')
>                               s++;
>                       p_indent = indent;
>                       p_start = previous_line;

Reply via email to