code4rena-2022-08-nounsdao-n11
[N‑11] Not using the named return variables anywhere in the function is confusing
Summary
Named return으로 작성해 놓고 정작 이를 이용하지 않고 직접 리턴했다. 헷갈리므로 unnamed return으로 변경하자고 제안했다.
Keyword
clean code, readability, named return, solidity
Vulnerability
- contracts/governance/NounsDAOLogicV1.sol#L392-L399
- contracts/governance/NounsDAOLogicV2.sol#L403-L410
File: contracts/governance/NounsDAOLogicV1.sol
function getActions(uint256 proposalId)
external
view
returns (
address[] memory targets,
uint256[] memory values,
string[] memory signatures,
bytes[] memory calldatas
)
{
Proposal storage p = proposals[proposalId];
return (p.targets, p.values, p.signatures, p.calldatas);
}File: contracts/governance/NounsDAOLogicV2.sol
function getActions(uint256 proposalId)
external
view
returns (
address[] memory targets,
uint256[] memory values,
string[] memory signatures,
bytes[] memory calldatas
)
{
Proposal storage p = _proposals[proposalId];
return (p.targets, p.values, p.signatures, p.calldatas);
}Named return으로 작성해놓고 정작 이를 이용하지 않고 직접 리턴했다. 헷갈리므로 unnamed return으로 변경하자고 제안했다.
Impact
코드가 헷갈린다.
Mitigation
사용하지 않는 named return은 unnamed로 바꾼다.
tags: bughunting, nouns dao, smart contract, solidity, clean code, readability, solidity named return, severity none