Skip to content

Commit

Permalink
Bump SPDX Licence ids to 0.2.0 (#376)
Browse files Browse the repository at this point in the history
* bump to 0.2.0

* rename reentrancy file and add missing licence

* fix test names

* add reentrnacyguard file

* Update RELEASING.md
  • Loading branch information
martriay committed Jul 1, 2022
1 parent ef10be4 commit d3ee30b
Show file tree
Hide file tree
Showing 32 changed files with 39 additions and 31 deletions.
4 changes: 2 additions & 2 deletions docs/Security.md
Expand Up @@ -82,10 +82,10 @@ For a list of full implementations utilizing the Pausable library, see:

A [reentrancy attack](https://gus-tavo-guim.medium.com/reentrancy-attack-on-smart-contracts-how-to-identify-the-exploitable-and-an-example-of-an-attack-4470a2d8dfe4) occurs when the caller is able to obtain more resources than allowed by recursively calling a target’s function.

Since Cairo does not support modifiers like Solidity, the [`reentrancy_guard`](../src/openzeppelin/security/reentrancy_guard.cairo) library exposes two methods `_start` and `_end` to protect functions against reentrancy attacks. The protected function must call `ReentrancyGuard._start` before the first function statement, and `ReentrancyGuard._end` before the return statement, as shown below:
Since Cairo does not support modifiers like Solidity, the [`reentrancyguard`](../src/openzeppelin/security/reentrancyguard.cairo) library exposes two methods `_start` and `_end` to protect functions against reentrancy attacks. The protected function must call `ReentrancyGuard._start` before the first function statement, and `ReentrancyGuard._end` before the return statement, as shown below:

```cairo
from openzeppelin.security.reentrancy_guard import ReentrancyGuard
from openzeppelin.security.reentrancyguard import ReentrancyGuard
func test_function{
syscall_ptr : felt*,
Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/access/ownable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (access/ownable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (access/ownable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/account/Account.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (account/Account.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (account/Account.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/account/AddressRegistry.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (account/AddressRegistry.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (account/AddressRegistry.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/account/EthAccount.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (account/EthAccount.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (account/EthAccount.cairo)

%lang starknet
from starkware.cairo.common.cairo_builtins import HashBuiltin, SignatureBuiltin, BitwiseBuiltin
Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/account/IAccount.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (account/IAccount.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (account/IAccount.cairo)

%lang starknet

Expand Down
3 changes: 3 additions & 0 deletions src/openzeppelin/account/library.cairo
@@ -1,3 +1,6 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.2.0 (account/library.cairo)

%lang starknet

from starkware.cairo.common.registers import get_fp_and_pc
Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/introspection/ERC165.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (introspection/ERC165.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (introspection/ERC165.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/introspection/IERC165.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (introspection/IERC165.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (introspection/IERC165.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/security/initializable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (security/initializable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (security/initializable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/security/pausable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (security/pausable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (security/pausable.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Cairo Contracts v0.1.0 (security/reentrancyguard.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (security/reentrancyguard.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/security/safemath.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (security/safemath.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (security/safemath.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/ERC20.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/ERC20.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/ERC20.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/ERC20_Mintable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/ERC20_Mintable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/ERC20_Mintable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/ERC20_Pausable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/ERC20_Pausable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/ERC20_Pausable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/ERC20_Upgradeable.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/ERC20_Upgradeable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/ERC20_Upgradeable.cairo)

%lang starknet
%builtins pedersen range_check
Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/interfaces/IERC20.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/interfaces/IERC20.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/interfaces/IERC20.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc20/library.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc20/library.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc20/library.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/ERC721_Mintable_Burnable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/ERC721_Mintable_Burnable.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/ERC721_Mintable_Pausable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/ERC721_Mintable_Pausable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc721/interfaces/IERC721.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/interfaces/IERC721.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/interfaces/IERC721.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/interfaces/IERC721_Metadata.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/interfaces/IERC721_Metadata.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/interfaces/IERC721_Receiver.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/interfaces/IERC721_Receiver.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc721/library.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/library.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/library.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc721/utils/ERC721_Holder.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721/utils/ERC721_Holder.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721/utils/ERC721_Holder.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721_enumerable/ERC721_Enumerable_Mintable_Burnable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721_enumerable/ERC721_Enumerable_Mintable_Burnable.cairo)

%lang starknet

Expand Down
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721_enumerable/interfaces/IERC721_Enumerable.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721_enumerable/interfaces/IERC721_Enumerable.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/token/erc721_enumerable/library.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (token/erc721_enumerable/library.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (token/erc721_enumerable/library.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion src/openzeppelin/utils/constants.cairo
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: MIT
# OpenZeppelin Contracts for Cairo v0.1.0 (utils/constants.cairo)
# OpenZeppelin Contracts for Cairo v0.2.0 (utils/constants.cairo)

%lang starknet

Expand Down
2 changes: 1 addition & 1 deletion tests/mocks/reentrancy_mock.cairo
Expand Up @@ -7,7 +7,7 @@ from starkware.cairo.common.math_cmp import is_le
from starkware.cairo.common.bool import TRUE
from starkware.starknet.common.syscalls import get_contract_address

from openzeppelin.security.reentrancy_guard import ReentrancyGuard
from openzeppelin.security.reentrancyguard import ReentrancyGuard

@contract_interface
namespace IReentrancyGuardAttacker:
Expand Down
5 changes: 5 additions & 0 deletions tests/security/test_reentrancy.py
Expand Up @@ -6,6 +6,7 @@

INITIAL_COUNTER = 0


@pytest.fixture(scope='module')
async def reentrancy_mock():
starknet = await Starknet.empty()
Expand All @@ -16,13 +17,15 @@ async def reentrancy_mock():

return contract, starknet


@pytest.mark.asyncio
async def test_reentrancy_guard_deploy(reentrancy_mock):
contract, _ = reentrancy_mock
response = await contract.current_count().call()

assert response.result == (INITIAL_COUNTER,)


@pytest.mark.asyncio
async def test_reentrancy_guard_remote_callback(reentrancy_mock):
contract, starknet = reentrancy_mock
Expand All @@ -33,6 +36,7 @@ async def test_reentrancy_guard_remote_callback(reentrancy_mock):
reverted_with="ReentrancyGuard: reentrant call"
)


@pytest.mark.asyncio
async def test_reentrancy_guard_local_recursion(reentrancy_mock):
contract, _ = reentrancy_mock
Expand All @@ -47,6 +51,7 @@ async def test_reentrancy_guard_local_recursion(reentrancy_mock):
reverted_with="ReentrancyGuard: reentrant call"
)


@pytest.mark.asyncio
async def test_reentrancy_guard(reentrancy_mock):
contract, _ = reentrancy_mock
Expand Down

0 comments on commit d3ee30b

Please sign in to comment.