@@ -46,20 +46,15 @@ contract ReentrantRefundReceiver {
4646 attackCount++ ;
4747 // Attempt to re-enter requestExecution during refund
4848 router.requestExecution {value: msg .value }(
49- dstChain,
50- dstAddr,
51- address (this ),
52- quoterAddr,
53- requestBytes,
54- relayInstructions
49+ dstChain, dstAddr, address (this ), quoterAddr, requestBytes, relayInstructions
5550 );
5651 }
5752 }
5853}
5954
6055// Contract that rejects ETH transfers (no receive or fallback)
6156contract RefundRejecter {
62- // Intentionally no receive() or fallback() function
57+ // Intentionally no receive() or fallback() function
6358}
6459
6560// Malicious quoter that returns manipulated values
@@ -72,11 +67,7 @@ contract MaliciousQuoter is IExecutorQuoter {
7267 payeeAddress = bytes32 (uint256 (uint160 (_payee)));
7368 }
7469
75- function requestQuote (uint16 , bytes32 , address , bytes calldata , bytes calldata )
76- external
77- view
78- returns (uint256 )
79- {
70+ function requestQuote (uint16 , bytes32 , address , bytes calldata , bytes calldata ) external view returns (uint256 ) {
8071 return reportedPrice;
8172 }
8273
@@ -263,75 +254,48 @@ contract ExecutorQuoterRouterTest is Test {
263254 // Assertion-based tests
264255
265256 function test_quoteExecution_returnsCorrectValue () public view {
266- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
257+ bytes memory requestBytes =
258+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
267259 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
268260
269261 uint256 routerQuote = executorQuoterRouter.quoteExecution (
270- DST_CHAIN,
271- DST_ADDR,
272- testQuoter,
273- testQuoter,
274- requestBytes,
275- relayInstructions
262+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
276263 );
277264
278- uint256 directQuote = executorQuoter.requestQuote (
279- DST_CHAIN,
280- DST_ADDR,
281- testQuoter,
282- requestBytes,
283- relayInstructions
284- );
265+ uint256 directQuote =
266+ executorQuoter.requestQuote (DST_CHAIN, DST_ADDR, testQuoter, requestBytes, relayInstructions);
285267
286268 assertEq (routerQuote, directQuote, "Router quote should match direct quoter quote " );
287269 }
288270
289271 function test_requestExecution_underpaid () public {
290- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
272+ bytes memory requestBytes =
273+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
291274 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
292275
293276 uint256 quote = executorQuoterRouter.quoteExecution (
294- DST_CHAIN,
295- DST_ADDR,
296- testQuoter,
297- testQuoter,
298- requestBytes,
299- relayInstructions
277+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
300278 );
301279
302280 vm.expectRevert (abi.encodeWithSelector (ExecutorQuoterRouter.Underpaid.selector , quote - 1 , quote));
303281 executorQuoterRouter.requestExecution {value: quote - 1 }(
304- DST_CHAIN,
305- DST_ADDR,
306- testQuoter,
307- testQuoter,
308- requestBytes,
309- relayInstructions
282+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
310283 );
311284 }
312285
313286 function test_requestExecution_paysPayee () public {
314- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
287+ bytes memory requestBytes =
288+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
315289 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
316290
317291 uint256 quote = executorQuoterRouter.quoteExecution (
318- DST_CHAIN,
319- DST_ADDR,
320- testQuoter,
321- testQuoter,
322- requestBytes,
323- relayInstructions
292+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
324293 );
325294
326295 uint256 payeeBalanceBefore = testQuoter.balance;
327296
328297 executorQuoterRouter.requestExecution {value: quote}(
329- DST_CHAIN,
330- DST_ADDR,
331- testQuoter,
332- testQuoter,
333- requestBytes,
334- relayInstructions
298+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
335299 );
336300
337301 assertEq (testQuoter.balance, payeeBalanceBefore + quote, "Payee should receive exact payment " );
@@ -346,16 +310,12 @@ contract ExecutorQuoterRouterTest is Test {
346310 /// The current implementation does allow reentrancy, but it should not
347311 /// cause loss of funds since state is read before the external call.
348312 function test_reentrancy_duringRefund () public {
349- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
313+ bytes memory requestBytes =
314+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
350315 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
351316
352317 uint256 quote = executorQuoterRouter.quoteExecution (
353- DST_CHAIN,
354- DST_ADDR,
355- testQuoter,
356- testQuoter,
357- requestBytes,
358- relayInstructions
318+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
359319 );
360320
361321 // Deploy reentrancy attacker
@@ -380,12 +340,7 @@ contract ExecutorQuoterRouterTest is Test {
380340 // Call from attacker context - the attacker will try to reenter on refund
381341 vm.prank (address (attacker));
382342 executorQuoterRouter.requestExecution {value: quote + excess}(
383- DST_CHAIN,
384- DST_ADDR,
385- address (attacker),
386- testQuoter,
387- requestBytes,
388- relayInstructions
343+ DST_CHAIN, DST_ADDR, address (attacker), testQuoter, requestBytes, relayInstructions
389344 );
390345
391346 // Verify payee received correct payment (should be quote * 3 if reentrancy succeeded)
@@ -420,30 +375,20 @@ contract ExecutorQuoterRouterTest is Test {
420375 )
421376 );
422377
423- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
378+ bytes memory requestBytes =
379+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
424380 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
425381
426382 // Quote returns 0
427- uint256 quote = executorQuoterRouter.quoteExecution (
428- DST_CHAIN,
429- DST_ADDR,
430- mallory,
431- mallory,
432- requestBytes,
433- relayInstructions
434- );
383+ uint256 quote =
384+ executorQuoterRouter.quoteExecution (DST_CHAIN, DST_ADDR, mallory, mallory, requestBytes, relayInstructions);
435385 assertEq (quote, 0 , "Malicious quoter should return 0 " );
436386
437387 // User sends 1 ether thinking it's a good deal, gets full refund
438388 uint256 userBalanceBefore = address (this ).balance;
439389
440390 executorQuoterRouter.requestExecution {value: 1 ether }(
441- DST_CHAIN,
442- DST_ADDR,
443- address (this ),
444- mallory,
445- requestBytes,
446- relayInstructions
391+ DST_CHAIN, DST_ADDR, address (this ), mallory, requestBytes, relayInstructions
447392 );
448393
449394 // User should get full refund since quote was 0
@@ -473,19 +418,15 @@ contract ExecutorQuoterRouterTest is Test {
473418 )
474419 );
475420
476- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
421+ bytes memory requestBytes =
422+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
477423 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
478424
479425 uint256 userBalanceBefore = address (this ).balance;
480426
481427 // User overpays significantly
482428 executorQuoterRouter.requestExecution {value: 1 ether }(
483- DST_CHAIN,
484- DST_ADDR,
485- address (this ),
486- mallory,
487- requestBytes,
488- relayInstructions
429+ DST_CHAIN, DST_ADDR, address (this ), mallory, requestBytes, relayInstructions
489430 );
490431
491432 // User should get refund of (1 ether - lowPrice)
@@ -550,16 +491,12 @@ contract ExecutorQuoterRouterTest is Test {
550491 // Deploy a contract that cannot receive ETH
551492 RefundRejecter rejecter = new RefundRejecter ();
552493
553- bytes memory requestBytes = ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
494+ bytes memory requestBytes =
495+ ExecutorMessages.makeVAAv1Request (OUR_CHAIN, bytes32 (uint256 (uint160 (address (this )))), 1 );
554496 bytes memory relayInstructions = RelayInstructions.encodeGas (250000 , 0 );
555497
556498 uint256 quote = executorQuoterRouter.quoteExecution (
557- DST_CHAIN,
558- DST_ADDR,
559- testQuoter,
560- testQuoter,
561- requestBytes,
562- relayInstructions
499+ DST_CHAIN, DST_ADDR, testQuoter, testQuoter, requestBytes, relayInstructions
563500 );
564501
565502 // Overpay so a refund is attempted
0 commit comments