From ed3b30599370432f6ac501e36099f597f5999d27 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Fri, 3 Nov 2017 17:04:30 +0000 Subject: [PATCH] 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 --- usr.bin/patch/patch.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usr.bin/patch/patch.c b/usr.bin/patch/patch.c index 24e09ed304ad..204b1146b94c 100644 --- a/usr.bin/patch/patch.c +++ b/usr.bin/patch/patch.c @@ -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)