Skip to content

Commit ad09d2d

Browse files
committed
refactor validBytes method
1 parent a4a0a24 commit ad09d2d

File tree

1 file changed

+25
-53
lines changed

1 file changed

+25
-53
lines changed

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

Lines changed: 25 additions & 53 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,9 +47,6 @@
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")
@@ -61,56 +56,30 @@ public class TransactionUtil {
6156
@Autowired
6257
private ChainBaseManager chainBaseManager;
6358

64-
public static boolean validAccountName(byte[] accountName) {
65-
if (ArrayUtils.isEmpty(accountName)) {
66-
return true; //account name can be empty
67-
}
68-
69-
return accountName.length <= 200;
70-
}
59+
private static final int maxAccountNameLen = 200;
60+
private static final int maxAccountIdLen = 32;
61+
private static final int minAccountIdLen = 8;
62+
private static final int maxAssetNameLen = 32;
63+
private static final int maxTokenAbbrName = 5;
64+
private static final int maxAssetDescription = 200;
65+
private static final int maxUrlLen = 256;
7166

7267
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-
68+
return validReadableBytes(accountId, maxAccountIdLen) && accountId.length < minAccountIdLen;
8769
}
8870

8971
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-
72+
return validReadableBytes(assetName, maxAssetNameLen);
9973
}
10074

10175
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-
76+
return validReadableBytes(abbrName, maxTokenAbbrName);
11177
}
11278

113-
private static boolean validBytes(byte[] bytes) {
79+
private static boolean validReadableBytes(byte[] bytes, int maxLength) {
80+
if (ArrayUtils.isEmpty(bytes) || bytes.length > maxLength) {
81+
return false;
82+
}
11483
// b must be readable
11584
for (byte b : bytes) {
11685
if (b < 0x21) {
@@ -123,20 +92,23 @@ private static boolean validBytes(byte[] bytes) {
12392
return true;
12493
}
12594

95+
public static boolean validAccountName(byte[] accountName) {
96+
return validBytes(accountName, maxAccountNameLen, true);
97+
}
12698

12799
public static boolean validAssetDescription(byte[] description) {
128-
if (ArrayUtils.isEmpty(description)) {
129-
return true; //description can empty
130-
}
131-
132-
return description.length <= 200;
100+
return validBytes(description, maxAssetDescription, true);
133101
}
134102

135103
public static boolean validUrl(byte[] url) {
136-
if (ArrayUtils.isEmpty(url)) {
137-
return false;
104+
return validBytes(url, maxUrlLen, false);
105+
}
106+
107+
private static boolean validBytes(byte[] bytes, int maxLength, boolean allowEmpty) {
108+
if (ArrayUtils.isEmpty(bytes)) {
109+
return allowEmpty;
138110
}
139-
return url.length <= 256;
111+
return bytes.length <= maxLength;
140112
}
141113

142114
public static boolean isNumber(byte[] id) {

0 commit comments

Comments
 (0)