51918 sc insight redundant zero address checks for router address
Submitted on: Aug 6th 2025 at 15:34:29 UTC Submitted by: @Am3nh3l for Attackathon | Plume Network Report ID: #51918 Report Type: Smart Contract Severity: Insight Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/arc/src/ArcToken.sol
Description
The ArcToken contract contains redundant zero address checks for the router address in _isYieldAllowed and _update functions. These checks are unnecessary because the initialize function already enforces a non-zero router address and there is no mechanism to reset it to zero later.
Brief / Intro
The initialize function enforces that the router address is not the zero address:
require(routerAddress_ != address(0), "Router address cannot be zero");Despite that, _isYieldAllowed and _update still check if restrictionsRouter is zero and revert with RouterNotSet() if so.
Vulnerability Details
initializerequires a non-zero router address, ensuringrestrictionsRouteris set to a valid address during initialization._isYieldAllowedand_updateperform redundant checks like:
if (routerAddr == address(0)) {
revert RouterNotSet();
}There is no mechanism in the contract to set
restrictionsRouterback to the zero address after initialization.Therefore these checks are redundant and can be removed to reduce gas usage and simplify the code.
Impact Details
Insight — redundant checks increase gas usage and add code complexity but do not create an exploitable condition under the described contract design.
References
Target source: https://github.com/immunefi-team/attackathon-plume-network/blob/main/arc/src/ArcToken.sol
Proof of Concept
Was this helpful?