From patchwork Wed Dec 2 15:01:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [STABLE] parsers: fix parse_dirstate to check len before unpacking header (issue4979) From: Yuya Nishihara X-Patchwork-Id: 11745 Message-Id: To: mercurial-devel@selenic.com Date: Thu, 03 Dec 2015 00:01:55 +0900 # HG changeset patch # User Yuya Nishihara # Date 1449065098 -32400 # Wed Dec 02 23:04:58 2015 +0900 # Branch stable # Node ID f5e8cb813a4d5c0665c7e144d96810b4763c42d1 # Parent 7e1fac6c0a9ce6afd3edeed5e47bcca343155d8a parsers: fix parse_dirstate to check len before unpacking header (issue4979) diff --git a/mercurial/parsers.c b/mercurial/parsers.c --- a/mercurial/parsers.c +++ b/mercurial/parsers.c @@ -493,6 +493,11 @@ static PyObject *parse_dirstate(PyObject /* read filenames */ while (pos >= 40 && pos < len) { + if (pos + 17 > len) { + PyErr_SetString(PyExc_ValueError, + "overflow in dirstate"); + goto quit; + } cur = str + pos; /* unpack header */ state = *cur;