From d40b04b5d38399daf1c7108c1ecc0de4603d4852 Mon Sep 17 00:00:00 2001
From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com>
Date: Fri, 19 Jul 2024 14:06:08 +0200
Subject: [PATCH] chore: add (start share == end share) check in parse
namespace (backport #3709) (#3710)
## Overview
The start share shouldn't be equal to the end share because the range is
end-exclusive. This PR adds this check.
This is an automatic backport of pull request #3709 done by
[Mergify](https://mergify.com).
---------
Co-authored-by: sweexordious
---
pkg/proof/proof_test.go | 7 +++++++
pkg/proof/querier.go | 9 +++------
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/pkg/proof/proof_test.go b/pkg/proof/proof_test.go
index a8d8ae0756..757cf0bf18 100644
--- a/pkg/proof/proof_test.go
+++ b/pkg/proof/proof_test.go
@@ -147,6 +147,13 @@ func TestNewShareInclusionProof(t *testing.T) {
namespaceID: appns.TxNamespace,
expectErr: true,
},
+ {
+ name: "ending share is equal to the starting share",
+ startingShare: 1,
+ endingShare: 1,
+ namespaceID: appns.TxNamespace,
+ expectErr: true,
+ },
{
name: "ending share higher than number of shares available in square size of 32",
startingShare: 0,
diff --git a/pkg/proof/querier.go b/pkg/proof/querier.go
index 9fca6c5afa..4e32dfb5c4 100644
--- a/pkg/proof/querier.go
+++ b/pkg/proof/querier.go
@@ -123,17 +123,14 @@ func QueryShareInclusionProof(_ sdk.Context, path []string, req abci.RequestQuer
// ParseNamespace validates the share range, checks if it only contains one namespace and returns
// that namespace ID.
+// The provided range, defined by startShare and endShare, is end-exclusive.
func ParseNamespace(rawShares []shares.Share, startShare, endShare int) (appns.Namespace, error) {
if startShare < 0 {
return appns.Namespace{}, fmt.Errorf("start share %d should be positive", startShare)
}
- if endShare < 0 {
- return appns.Namespace{}, fmt.Errorf("end share %d should be positive", endShare)
- }
-
- if endShare < startShare {
- return appns.Namespace{}, fmt.Errorf("end share %d cannot be lower than starting share %d", endShare, startShare)
+ if endShare <= startShare {
+ return appns.Namespace{}, fmt.Errorf("end share %d cannot be lower or equal to the starting share %d", endShare, startShare)
}
if endShare > len(rawShares) {