changeset 45787:225e513c444e

tags: add safety check for len(record) while reading hgtagsfnodescache I am trying to fix a breakage where somehow we end up getting a node of 12 length from `getfnode()`. Understanding the hgtagsfnodescache code, it seems highly unlikely that it can happen unless one of `mctx.readfast().get()` or `ctx.filenode()` is returning a node of 12 length. For safety, I think it's better to add a check to make sure that record which we are parsing is of same length we are expecting otherwise we consider that as invalid record. Differential Revision: https://phab.mercurial-scm.org/D9169
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 07 Oct 2020 14:26:47 +0530
parents 37c65704869d
children a5206e71c536
files mercurial/tags.py
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/tags.py	Wed Oct 14 17:52:18 2020 +0200
+++ b/mercurial/tags.py	Wed Oct 07 14:26:47 2020 +0530
@@ -759,7 +759,7 @@
         properprefix = node[0:4]
 
         # Validate and return existing entry.
-        if record != _fnodesmissingrec:
+        if record != _fnodesmissingrec and len(record) == _fnodesrecsize:
             fileprefix = record[0:4]
 
             if fileprefix == properprefix: