From e62ebf6b0ea54848ccf376e10d2a33f751fd5b21 Mon Sep 17 00:00:00 2001 From: r4bbit <445106+0x-r4bbit@users.noreply.github.com> Date: Mon, 5 Aug 2024 10:58:51 +0200 Subject: [PATCH] fix: ensure requestStorage() reverts if maxSlotloss > slots (#140) --- contracts/Marketplace.sol | 4 ++++ test/Marketplace.test.js | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index e0f3f8d..4ea1b6f 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -95,6 +95,10 @@ contract Marketplace is Proofs, StateRetrieval, Endian { request.expiry > 0 && request.expiry < request.ask.duration, "Expiry not in range" ); + require( + request.ask.maxSlotLoss <= request.ask.slots, + "maxSlotLoss exceeds slots" + ); _requests[id] = request; _requestContexts[id].endsAt = block.timestamp + request.ask.duration; diff --git a/test/Marketplace.test.js b/test/Marketplace.test.js index 38e75f6..413ce68 100644 --- a/test/Marketplace.test.js +++ b/test/Marketplace.test.js @@ -185,6 +185,13 @@ describe("Marketplace", function () { ) }) + it("is rejected when maxSlotLoss exceeds slots", async function () { + request.ask.maxSlotLoss = request.ask.slots + 1 + await expect(marketplace.requestStorage(request)).to.be.revertedWith( + "maxSlotLoss exceeds slots" + ) + }) + it("rejects resubmission of request", async function () { await token.approve(marketplace.address, price(request) * 2) await marketplace.requestStorage(request)