Re: [PATCH 1/9] git_config_set: fix off-by-two

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 29, 2018 at 8:18 AM, Johannes Schindelin
<johannes.schindelin@xxxxxx> wrote:
> Currently, we are slightly overzealous When removing an entry from a
> config file of this form:
>
>         [abc]a
>         [xyz]
>                 key = value
>
> When calling `git config --unset abc.a` on this file, it leaves this
> (invalid) config behind:
>
>         [
>         [xyz]
>                 key = value
>
> The reason is that we try to search for the beginning of the line (or
> for the end of the preceding section header on the same line) that
> defines abc.a, but as an optimization, we subtract 2 from the offset
> pointing just after the definition before we call
> find_beginning_of_line(). That function, however, *also* performs that
> optimization and promptly fails to find the section header correctly.

This commit message would be more convincing if we had it in test form.

    [abc]a

is not written by Git, but would be written from an outside tool or person
and we barely cope with it?

Thanks,
Stefan

>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
> ---
>  config.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/config.c b/config.c
> index b0c20e6cb8a..5cc049aaef0 100644
> --- a/config.c
> +++ b/config.c
> @@ -2632,7 +2632,7 @@ int git_config_set_multivar_in_file_gently(const char *config_filename,
>                         } else
>                                 copy_end = find_beginning_of_line(
>                                         contents, contents_sz,
> -                                       store.offset[i]-2, &new_line);
> +                                       store.offset[i], &new_line);
>
>                         if (copy_end > 0 && contents[copy_end-1] != '\n')
>                                 new_line = 1;
> --
> 2.16.2.windows.1.26.g2cc3565eb4b
>
>



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux