From: Junio C Hamano Date: Thu, 01 Jan 2009 13:00:27 GMT Subject: Re: [RFC PATCH] builtin-apply: prevent non-explicit permission changes Message-ID: <7vfxk3npuc.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20081230235357.GA12747@myhost> Alexander Potashev writes: > builtin-apply.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/builtin-apply.c b/builtin-apply.c > index 07244b0..071f6d8 100644 > --- a/builtin-apply.c > +++ b/builtin-apply.c > @@ -630,7 +630,7 @@ static int gitdiff_index(const char *line, struct patch *patch) > memcpy(patch->new_sha1_prefix, line, len); > patch->new_sha1_prefix[len] = 0; > if (*ptr == ' ') > - patch->new_mode = patch->old_mode = strtoul(ptr+1, NULL, 8); > + patch->old_mode = strtoul(ptr+1, NULL, 8); > return 0; > } > > @@ -2447,6 +2447,7 @@ static int check_preimage(struct patch *patch, struct cache_entry **ce, struct s > if (st_mode != patch->old_mode) > fprintf(stderr, "warning: %s has type %o, expected %o\n", > old_name, st_mode, patch->old_mode); > + patch->new_mode = st_mode; Can you do this unconditionally, overwriting whatever we read from the patch header metainfo lines?