From 87461f6b835cceff898798098fd14c1144d19b40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Uhl=C3=AD=C5=99?= Date: Tue, 5 Dec 2023 11:18:43 +0100 Subject: [PATCH] fix: check expiration is before request end (#77) --- contracts/Marketplace.sol | 4 +++- test/Marketplace.test.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index 9fae544..435d488 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -84,7 +84,9 @@ contract Marketplace is Proofs, StateRetrieval { require(_requests[id].client == address(0), "Request already exists"); _requests[id] = request; - _requestContexts[id].endsAt = block.timestamp + request.ask.duration; + uint256 requestEnd = block.timestamp + request.ask.duration; + require(requestEnd > request.expiry, "Request end before expiry"); + _requestContexts[id].endsAt = requestEnd; _addToMyRequests(request.client, id); diff --git a/test/Marketplace.test.js b/test/Marketplace.test.js index a3416ed..a544f83 100644 --- a/test/Marketplace.test.js +++ b/test/Marketplace.test.js @@ -152,6 +152,14 @@ describe("Marketplace", function () { ) }) + it("rejects request when expiry is after request end", async function () { + request.expiry = await currentTime() + request.ask.duration + hours(1) + await token.approve(marketplace.address, price(request)) + await expect(marketplace.requestStorage(request)).to.be.revertedWith( + "Request end before expiry" + ) + }) + it("rejects resubmission of request", async function () { await token.approve(marketplace.address, price(request) * 2) await marketplace.requestStorage(request)