Author: kevans
Date: Fri Nov  3 17:04:30 2017
New Revision: 325365
URL: https://svnweb.freebsd.org/changeset/base/325365

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.
  
  PR:           74127
  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  Fri Nov  3 15:57:27 2017        (r325364)
+++ head/usr.bin/patch/patch.c  Fri Nov  3 17:04:30 2017        (r325365)
@@ -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 anymore 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)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to