commit ea3c8ad0ebe202b3e09ef8728c80427af45e6793
parent f2055c88b5107bd345ad4917b390f5d58461c8b3
Author: lash <dev@holbrook.no>
Date:   Wed, 22 Mar 2023 11:50:04 +0000
Fix non-trivial issues for BadgeToken reported by slither (0.9.3)
Diffstat:
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/python/CHANGELOG b/python/CHANGELOG
@@ -1,3 +1,7 @@
+- 0.1.5
+	* Fix non-trivial issues for BadgeToken reported by slither (0.9.3)
+- 0.1.4
+	* Upgrade deps
 - 0.1.3
 	* Correct interface signatures in contract (ERC165)
 - 0.1.2
diff --git a/python/setup.cfg b/python/setup.cfg
@@ -1,6 +1,6 @@
 [metadata]
 name = eth-erc721
-version = 0.1.4
+version = 0.1.5
 description = ERC721 interface and simple contract with deployment script providing arbitrary minting of NFTs with freely settable tokenids
 author = Louis Holbrook
 author_email = dev@holbrook.no
diff --git a/solidity/BadgeToken.sol b/solidity/BadgeToken.sol
@@ -47,6 +47,11 @@ contract BadgeToken {
 		name = _name;
 		symbol = _symbol;
 	}
+	
+	function withdraw(uint256 _amount) public returns(bool) {
+		require(msg.sender == owner, 'ERR_ACCESS');
+		payable(msg.sender).transfer(_amount);
+	}
 
 	// ERC-721
 	function balanceOf(address _owner) external view returns (uint256) {
@@ -78,7 +83,7 @@ contract BadgeToken {
 
 		tokenOwner[_tokenId] = _to;
 
-		for (uint256 i; i < _data.length; i++) {
+		for (uint256 i = 0; i < _data.length; i++) {
 			tokenData[_tokenId][i % 32] = _data[i];
 		}
 	}
@@ -87,6 +92,7 @@ contract BadgeToken {
 	function transferFrom(address _from, address _to, uint256 _tokenId) external payable {
 		bytes memory _data;
 
+		_data = new bytes(0);
 		transferCore(_from, _to, _tokenId, _data);
 		emit Transfer(_from, _to, _tokenId);
 	}
@@ -102,6 +108,7 @@ contract BadgeToken {
 	function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable {
 		bytes memory _data;
 
+		_data = new bytes(0);
 		transferCore(_from, _to, _tokenId, _data);
 		emit Transfer(_from, _to, _tokenId);
 	}
@@ -237,7 +244,8 @@ contract BadgeToken {
 		previousOwner = owner;
 		currentTokenOwnerIndex = tokenOwnerIndex[previousOwner];
 
-		for (uint256 i; i < currentTokenOwnerIndex.length; i++) {
+		zeroData = new bytes(0);
+		for (uint256 i = 0; i < currentTokenOwnerIndex.length; i++) {
 			transferCore(previousOwner, _newOwner, currentTokenOwnerIndex[i], zeroData);
 		}