From 79e0bd0ff72ae1759e8b780e5d8b61b09c9a0399 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Wed, 29 Dec 2021 09:33:09 -0500 Subject: [PATCH] Fix index out of bounds error. refs #18438 Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- slicenumpy.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/slicenumpy.go b/slicenumpy.go index d780eb55c7..3af4aa04ef 100644 --- a/slicenumpy.go +++ b/slicenumpy.go @@ -309,9 +309,16 @@ func (cmd *sliceNumpy) RunCommand(prog string, args []string, stdin io.Reader, s seq[tv.Tag] = variants } for _, cg := range ent.CompactGenomes { - if matchGenome.MatchString(cg.Name) { - cgs[cg.Name] = cg + if !matchGenome.MatchString(cg.Name) { + continue + } + // pad to full slice size + // to avoid out-of-bounds + // checks later + if sliceSize := int(cg.EndTag - cg.StartTag); len(cg.Variants) < sliceSize { + cg.Variants = append(cg.Variants, make([]tileVariantID, sliceSize-len(cg.Variants))...) } + cgs[cg.Name] = cg } return nil }) @@ -340,12 +347,10 @@ func (cmd *sliceNumpy) RunCommand(prog string, args []string, stdin io.Reader, s for _, cg := range cgs { idx := int(tag-tagstart) * 2 - if idx < len(cg.Variants) { - for allele := 0; allele < 2; allele++ { - v := cg.Variants[idx+allele] - if v > 0 && len(variants[v].Sequence) > 0 { - count[variants[v].Blake2b]++ - } + for allele := 0; allele < 2; allele++ { + v := cg.Variants[idx+allele] + if v > 0 && len(variants[v].Sequence) > 0 { + count[variants[v].Blake2b]++ } } } -- 2.30.2