Skip to content

Commit d1cb1db

Browse files
authored
Merge pull request tronprotocol#3110 from gossens/refactor_validbytes_methon
refactor validBytes method
2 parents a4a0a24 + ad41d86 commit d1cb1db

File tree

1 file changed

+14
-40
lines changed

1 file changed

+14
-40
lines changed

actuator/src/main/java/org/tron/core/utils/TransactionUtil.java

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.google.protobuf.ByteString;
2424
import java.security.SignatureException;
2525
import java.util.ArrayList;
26-
import java.util.Arrays;
2726
import java.util.List;
2827
import lombok.extern.slf4j.Slf4j;
2928
import org.apache.commons.lang3.ArrayUtils;
@@ -35,7 +34,6 @@
3534
import org.tron.api.GrpcAPI.TransactionSignWeight;
3635
import org.tron.api.GrpcAPI.TransactionSignWeight.Result;
3736
import org.tron.common.parameter.CommonParameter;
38-
import org.tron.common.crypto.Hash;
3937
import org.tron.common.utils.Sha256Hash;
4038
import org.tron.core.ChainBaseManager;
4139
import org.tron.core.capsule.AccountCapsule;
@@ -49,15 +47,18 @@
4947
import org.tron.protos.Protocol.Transaction.Result.contractResult;
5048
import org.tron.protos.Protocol.TransactionSign;
5149
import org.tron.protos.contract.SmartContractOuterClass.CreateSmartContract;
52-
import org.tron.protos.contract.SmartContractOuterClass.SmartContract;
53-
import org.tron.protos.contract.SmartContractOuterClass.SmartContract.ABI;
54-
import org.tron.protos.contract.SmartContractOuterClass.SmartContract.ABI.Entry.StateMutabilityType;
5550
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
5651

5752
@Slf4j(topic = "capsule")
5853
@Component
5954
public class TransactionUtil {
6055

56+
private static final int maxAccountNameLen = 200;
57+
private static final int maxAccountIdLen = 32;
58+
private static final int minAccountIdLen = 8;
59+
private static final int maxAssetNameLen = 32;
60+
private static final int maxTokenAbbrNameLen = 5;
61+
6162
@Autowired
6263
private ChainBaseManager chainBaseManager;
6364

@@ -66,51 +67,25 @@ public static boolean validAccountName(byte[] accountName) {
6667
return true; //account name can be empty
6768
}
6869

69-
return accountName.length <= 200;
70+
return accountName.length <= maxAccountNameLen;
7071
}
7172

7273
public static boolean validAccountId(byte[] accountId) {
73-
if (ArrayUtils.isEmpty(accountId)) {
74-
return false;
75-
}
76-
77-
if (accountId.length < 8) {
78-
return false;
79-
}
80-
81-
if (accountId.length > 32) {
82-
return false;
83-
}
84-
85-
return validBytes(accountId);
86-
74+
return validReadableBytes(accountId, maxAccountIdLen) && accountId.length >= minAccountIdLen;
8775
}
8876

8977
public static boolean validAssetName(byte[] assetName) {
90-
if (ArrayUtils.isEmpty(assetName)) {
91-
return false;
92-
}
93-
if (assetName.length > 32) {
94-
return false;
95-
}
96-
97-
return validBytes(assetName);
98-
78+
return validReadableBytes(assetName, maxAssetNameLen);
9979
}
10080

10181
public static boolean validTokenAbbrName(byte[] abbrName) {
102-
if (ArrayUtils.isEmpty(abbrName)) {
103-
return false;
104-
}
105-
if (abbrName.length > 5) {
106-
return false;
107-
}
108-
109-
return validBytes(abbrName);
110-
82+
return validReadableBytes(abbrName, maxTokenAbbrNameLen);
11183
}
11284

113-
private static boolean validBytes(byte[] bytes) {
85+
private static boolean validReadableBytes(byte[] bytes, int maxLength) {
86+
if (ArrayUtils.isEmpty(bytes) || bytes.length > maxLength) {
87+
return false;
88+
}
11489
// b must be readable
11590
for (byte b : bytes) {
11691
if (b < 0x21) {
@@ -123,7 +98,6 @@ private static boolean validBytes(byte[] bytes) {
12398
return true;
12499
}
125100

126-
127101
public static boolean validAssetDescription(byte[] description) {
128102
if (ArrayUtils.isEmpty(description)) {
129103
return true; //description can empty

0 commit comments

Comments
 (0)