git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Flag empty patches as errors
@ 2005-10-01  6:25 Linus Torvalds
  2005-10-01  7:15 ` Junio C Hamano
  2005-10-01  9:02 ` Packing on kernel.org Martin Coxall
  0 siblings, 2 replies; 4+ messages in thread
From: Linus Torvalds @ 2005-10-01  6:25 UTC (permalink / raw)
  To: Junio C Hamano, Git Mailing List


A patch that contains no actual diff, and that doesn't change any 
meta-data is bad. It shouldn't be a patch at all, and git-apply shouldn't 
just accept it.

This caused a corrupted patch to be silently applied as an empty change in 
the kernel, because the corruption ended up making the patch look empty.

An example of such a patch is one that contains the patch header, but 
where the initial fragment header (the "@@ -nr,.." line) is missing, 
causing us to not parse any fragments.

The real "patch" program will also flag such patches as bad, with the 
message

	patch: **** Only garbage was found in the patch input.

and we should do likewise.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
diff --git a/apply.c b/apply.c
--- a/apply.c
+++ b/apply.c
@@ -723,6 +723,16 @@ static int parse_single_patch(char *line
 	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, uns
 
 	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;
 }
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-10-01 14:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-01  6:25 Flag empty patches as errors Linus Torvalds
2005-10-01  7:15 ` Junio C Hamano
2005-10-01  9:02 ` Packing on kernel.org Martin Coxall
2005-10-01 14:21   ` H. Peter Anvin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).