File hg-mpatch-fix02.patch of Package mercurial.8400

# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 1524895496 14400
# Node ID 1acfc35d478cdae60cf62c6f07fa6b6ad3070ea7
# Parent  90a274965de74cb0b4bea01a564b29b12a6af814
mpatch: protect against underflow in mpatch_apply (SEC)

Also caught by oss-fuzz fuzzer during development.

This defect is OVE-20180430-0002. A CVE has not been obtained as of this writing.

---
 mercurial/mpatch.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/mercurial/mpatch.c
+++ b/mercurial/mpatch.c
@@ -249,7 +249,7 @@ int mpatch_apply(char *buf, const char *
 	char *p = buf;
 
 	while (f != l->tail) {
-		if (f->start < last || f->end > len) {
+		if (f->start < last || f->end > len || last < 0) {
 			return MPATCH_ERR_INVALID_PATCH;
 		}
 		memcpy(p, orig + last, f->start - last);
@@ -259,6 +259,9 @@ int mpatch_apply(char *buf, const char *
 		p += f->len;
 		f++;
 	}
+	if (last < 0) {
+		return MPATCH_ERR_INVALID_PATCH;
+	}
 	memcpy(p, orig + last, len - last);
 	return 0;
 }
openSUSE Build Service is sponsored by