Mercurial > hg
changeset 40741:959130631de3
revlog: properly detect corrupted revlog in `index_get_length`
Pointed out by Yuya Nishihara.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Mon, 26 Nov 2018 00:21:09 +0100 |
parents | 30d878cb102d |
children | 8edca70dc951 |
files | mercurial/cext/revlog.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cext/revlog.c Mon Nov 26 00:15:12 2018 +0100 +++ b/mercurial/cext/revlog.c Mon Nov 26 00:21:09 2018 +0100 @@ -242,7 +242,14 @@ return (int)ret; } else { const char *data = index_deref(self, rev); - return (int)getbe32(data + 8); + int tmp = (int)getbe32(data + 8); + if (tmp < 0) { + PyErr_Format(PyExc_OverflowError, + "revlog entry size out of bound (%d)", + tmp); + return -1; + } + return tmp; } }