bytes32 details = action.detailsHash();
// if the token is of remote origin, mint the tokens. will either
// - be credited to router (fast liquidity)
// - be reserved for execution (slow liquidity)
if (!s.tokenRegistry.isLocalOrigin(token)) {
IBridgeToken(token).mint(address(this), amount);
// Tell the token what its detailsHash is
IBridgeToken(token).setDetailsHash(details);
}
// NOTE: if the token is of local origin, it means it was escrowed
// in this contract at xcall
// mark the transfer as reconciled
s.reconciledTransfers[transferId] = true;
return (amount, token, transferId);
}
Recommended Mitigation Steps
Move into the if scope:
// if the token is of remote origin, mint the tokens. will either
// - be credited to router (fast liquidity)
// - be reserved for execution (slow liquidity)
if (!s.tokenRegistry.isLocalOrigin(token)) {
bytes32 details = action.detailsHash();
IBridgeToken(token).mint(address(this), amount);
// Tell the token what its detailsHash is
IBridgeToken(token).setDetailsHash(details);
}
details is used only when !s.tokenRegistry.isLocalOrigin(token) holds:
https://github.com/code-423n4/2022-06-connext/blob/b4532655071566b33c41eac46e75be29b4a381ed/contracts/contracts/core/connext/facets/BridgeFacet.sol#L957-L974
Recommended Mitigation Steps
Move into the
if
scope: