X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=apply.c;h=f8862722fdba204d6e15e4d012f8891bcc36475c;hb=babfaba23d530e2818db62161825a65e582adbdc;hp=964df2db10c22d6ed0b89532e0af8cf9a43e607c;hpb=433ef8a2fb93627e311217b2a41b3132933e6b0b;p=git.git diff --git a/apply.c b/apply.c index 964df2db..f8862722 100644 --- a/apply.c +++ b/apply.c @@ -723,6 +723,16 @@ static int parse_single_patch(char *line, unsigned long size, struct patch *patc return offset; } +static inline int metadata_changes(struct patch *patch) +{ + return patch->is_rename > 0 || + patch->is_copy > 0 || + patch->is_new > 0 || + patch->is_delete || + (patch->old_mode && patch->new_mode && + patch->old_mode != patch->new_mode); +} + static int parse_chunk(char *buffer, unsigned long size, struct patch *patch) { int hdrsize, patchsize; @@ -733,6 +743,9 @@ static int parse_chunk(char *buffer, unsigned long size, struct patch *patch) patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch); + if (!patchsize && !metadata_changes(patch)) + die("patch with only garbage at line %d", linenr); + return offset + hdrsize + patchsize; }