tags: add safety check for len(record) while reading hgtagsfnodescache
authorPulkit Goyal <7895pulkit@gmail.com>
Wed, 07 Oct 2020 14:26:47 +0530
changeset 45787 225e513c444e
parent 45786 37c65704869d
child 45788 a5206e71c536
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
mercurial/tags.py
--- 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: