Skip to content

Commit

Permalink
fix slither notes
Browse files Browse the repository at this point in the history
  • Loading branch information
killroy192 committed Dec 28, 2023
1 parent eaf75d1 commit 4051760
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 9 deletions.
10 changes: 8 additions & 2 deletions .github/workflows/quality-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ jobs:
- run: make deploy

test:
needs: check-deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -43,7 +42,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: rm foundry.toml
- run: rm foundry.toml && touch .env
- uses: crytic/[email protected]
id: slither
with:
node-version: 18.15
sarif: results.sarif
fail-on: none
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: ${{ steps.slither.outputs.sarif }}
30 changes: 23 additions & 7 deletions src/example/SwapApp.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import {IFakedOracle} from "./fakers/IFakedOracle.sol";
*/
contract SwapApp is IOracleConsumerContract {
error UnsuccesfullTradeInititation(TradeParamsStruct tradeParams, uint256 nonce);
error NoAccess(address initiator);
error FailedSwap(address tokenIn, uint256 amountIn, address tokenOut, uint256 outputAmount);

event Price(uint256 price);

address public immutable oracle;
address public immutable ORACLE;

struct TradeParamsStruct {
address recipient;
Expand All @@ -26,15 +28,22 @@ contract SwapApp is IOracleConsumerContract {
event TradeExecuted(uint256 tokensAmount, int256 price);

constructor(address _oracle) {
oracle = _oracle;
ORACLE = _oracle;
}

modifier oracleCallback() {
if (msg.sender != ORACLE) {
revert NoAccess(msg.sender);
}
_;
}

function trade(TradeParamsStruct calldata tradeParams, uint256 nonce)
external
payable
returns (bool)
{
bool success = IOracle(oracle).addRequest{value: msg.value}(
bool success = IOracle(ORACLE).addRequest{value: msg.value}(
address(this), abi.encode(tradeParams), nonce, msg.sender
);
if (!success) {
Expand All @@ -48,7 +57,7 @@ contract SwapApp is IOracleConsumerContract {
payable
returns (bool)
{
bool success = IFakedOracle(oracle).addFakeRequest{value: msg.value}(
bool success = IFakedOracle(ORACLE).addFakeRequest{value: msg.value}(
address(this), abi.encode(tradeParams), nonce, msg.sender
);
if (!success) {
Expand All @@ -57,7 +66,7 @@ contract SwapApp is IOracleConsumerContract {
return success;
}

function consume(ForwardData calldata forwardData) external returns (bool) {
function consume(ForwardData calldata forwardData) external oracleCallback returns (bool) {
TradeParamsStruct memory tradeParams =
abi.decode(forwardData.forwardArguments, (TradeParamsStruct));
uint256 successfullyTradedTokens = _swapTokens(forwardData.price, tradeParams);
Expand Down Expand Up @@ -98,11 +107,18 @@ contract SwapApp is IOracleConsumerContract {

uint256 outputAmount = (priceForOneToken * tradeParams.amountIn) / 10 ** inputTokenDecimals;

IERC20Metadata(tradeParams.tokenIn).transferFrom(
bool successCharge = IERC20Metadata(tradeParams.tokenIn).transferFrom(
tradeParams.recipient, address(this), tradeParams.amountIn
);

IERC20Metadata(tradeParams.tokenOut).transfer(tradeParams.recipient, outputAmount);
bool successPay =
IERC20Metadata(tradeParams.tokenOut).transfer(tradeParams.recipient, outputAmount);

if (!successCharge || !successPay) {
revert FailedSwap(
tradeParams.tokenIn, tradeParams.amountIn, tradeParams.tokenOut, outputAmount
);
}

return outputAmount;
}
Expand Down

0 comments on commit 4051760

Please sign in to comment.