Skip to content

Factory lacks existence checks when  #233

Description

@ptisserand

From Cyfrin/2024-07-ark-project#2

[Low-1] Factory lacks existence checks

When utilizing a factory pattern to deploy contracts based on user input, it's crucial to ensure that the contract isn't being deployed at an address already in use. Deploying to an existing address can lead to unintentional overwrites or unexpected behavior. To prevent this, the factory contract should maintain a mapping or a list of deployed contract addresses. Before creating a new contract, the factory should check if the intended address is already in the list. If it is, the creation should be halted or rerouted. Implementing such checks minimizes risks, ensuring that contracts are only deployed to fresh, uncontaminated addresses, preserving the integrity of the protocol.

function deployERC721Bridgeable(
    string memory name,
    string memory symbol
)
    public
    returns (address)
{
    address impl = address(new ERC721Bridgeable()); // <= FOUND
    
    bytes memory dataInit = abi.encodeWithSelector(
        ERC721Bridgeable.initialize.selector,
        abi.encode(name, symbol)
   
    return address(new ERC1967Proxy(impl, dataInit));
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

ODHack8app:solidityWork on the Ethereum part of the application; you need to know Solidity.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions