svn commit: r326084 - head/usr.bin/patch

Kyle Evans kevans at FreeBSD.org
Wed Nov 22 03:44:21 UTC 2017


Author: kevans
Date: Wed Nov 22 03:44:19 2017
New Revision: 326084
URL: https://svnweb.freebsd.org/changeset/base/326084

Log:
  patch(1): don't assume a match if we run out of context to check
  
  Patches with very little context (-U0 and -U1) could get misapplied if
  the file to be patched changes and a hunk is no longer applicable. Matching
  with fuzz would be attempted and default to a match when we unexpectedly ran
  out of context.
  
  This also affected patches with higher levels of context but had limited
  actual context due to the hunk being located near the beginning/end of file.
  
  PR:		74127, 223545 (exp-run)
  Reviewed by:	emaste, pfg
  Approved by:	emaste (mentor)
  Differential Revision:	https://reviews.freebsd.org/D12631

Modified:
  head/usr.bin/patch/patch.c

Modified: head/usr.bin/patch/patch.c
==============================================================================
--- head/usr.bin/patch/patch.c	Wed Nov 22 01:53:59 2017	(r326083)
+++ head/usr.bin/patch/patch.c	Wed Nov 22 03:44:19 2017	(r326084)
@@ -1026,6 +1026,9 @@ patch_match(LINENUM base, LINENUM offset, LINENUM fuzz
 	const char	*plineptr;
 	unsigned short	plinelen;
 
+	/* Patch does not match if we don't have any more context to use */
+	if (pline > pat_lines)
+		return false;
 	for (iline = base + offset + fuzz; pline <= pat_lines; pline++, iline++) {
 		ilineptr = ifetch(iline, offset >= 0);
 		if (ilineptr == NULL)


More information about the svn-src-all mailing list