From patchwork Wed Jan 15 14:58:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7892: nodemap: never read more than the expected data amount From: phabricator X-Patchwork-Id: 44381 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 15 Jan 2020 14:58:27 +0000 marmoute created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY Since we are tracking this number we can use it to detect corrupted rawdata file and to only read the correct amount of data when possible. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D7892 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS To: marmoute, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -45,7 +45,12 @@ docket.data_unused = data_unused filename = _rawdata_filepath(revlog, docket) - return docket, revlog.opener.tryread(filename) + data = revlog.opener.tryread(filename) + if len(data) < data_length: + return None + elif len(data) > data_length: + data = data[:data_length] + return docket, data def setup_persistent_nodemap(tr, revlog):