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

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