3
0
mirror of https://github.com/Qortal/qortal.git synced 2025-02-12 10:15:49 +00:00

Unify transaction NAME_NOT_LOWER_CASE checks to Unicode NAME_NOT_NORMALIZED version

This commit is contained in:
catbref 2020-05-19 08:31:36 +01:00
parent 032c5d0d07
commit b4284515e7
11 changed files with 30 additions and 23 deletions

View File

@ -13,6 +13,7 @@ import org.qortal.data.transaction.TransactionData;
import org.qortal.naming.Name;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import com.google.common.base.Utf8;
@ -58,9 +59,9 @@ public class BuyNameTransaction extends Transaction {
if (nameLength < Name.MIN_NAME_SIZE || nameLength > Name.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH;
// Check name is lowercase
if (!name.equals(name.toLowerCase()))
return ValidationResult.NAME_NOT_LOWER_CASE;
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name);

View File

@ -11,6 +11,7 @@ import org.qortal.data.transaction.TransactionData;
import org.qortal.naming.Name;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import com.google.common.base.Utf8;
@ -51,9 +52,9 @@ public class CancelSellNameTransaction extends Transaction {
if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH;
// Check name is lowercase
if (!name.equals(name.toLowerCase()))
return ValidationResult.NAME_NOT_LOWER_CASE;
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name);

View File

@ -72,7 +72,7 @@ public class CreateGroupTransaction extends Transaction {
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!groupName.equals(Unicode.normalize(groupName)))
return ValidationResult.NAME_NOT_LOWER_CASE;
return ValidationResult.NAME_NOT_NORMALIZED;
Account creator = getCreator();

View File

@ -12,6 +12,7 @@ import org.qortal.data.transaction.TransactionData;
import org.qortal.data.voting.PollOptionData;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import org.qortal.voting.Poll;
import com.google.common.base.Utf8;
@ -51,8 +52,9 @@ public class CreatePollTransaction extends Transaction {
return ValidationResult.INVALID_ADDRESS;
// Check name size bounds
int pollNameLength = Utf8.encodedLength(this.createPollTransactionData.getPollName());
if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE)
String pollName = this.createPollTransactionData.getPollName();
int pollNameLength = Utf8.encodedLength(pollName);
if (pollNameLength < Poll.MIN_NAME_SIZE || pollNameLength > Poll.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH;
// Check description size bounds
@ -60,9 +62,9 @@ public class CreatePollTransaction extends Transaction {
if (pollDescriptionLength < 1 || pollDescriptionLength > Poll.MAX_DESCRIPTION_SIZE)
return ValidationResult.INVALID_DESCRIPTION_LENGTH;
// Check poll name is lowercase
if (!this.createPollTransactionData.getPollName().equals(this.createPollTransactionData.getPollName().toLowerCase()))
return ValidationResult.NAME_NOT_LOWER_CASE;
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!pollName.equals(Unicode.normalize(pollName)))
return ValidationResult.NAME_NOT_NORMALIZED;
// Check number of options
List<PollOptionData> pollOptions = this.createPollTransactionData.getPollOptions();

View File

@ -53,7 +53,7 @@ public class IssueAssetTransaction extends Transaction {
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!assetName.equals(Unicode.normalize(assetName)))
return ValidationResult.NAME_NOT_LOWER_CASE;
return ValidationResult.NAME_NOT_NORMALIZED;
// Check description size bounds
int assetDescriptionlength = Utf8.encodedLength(this.issueAssetTransactionData.getDescription());

View File

@ -60,7 +60,7 @@ public class RegisterNameTransaction extends Transaction {
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_LOWER_CASE;
return ValidationResult.NAME_NOT_NORMALIZED;
// Check registrant has enough funds
if (registrant.getConfirmedBalance(Asset.QORT) < this.registerNameTransactionData.getFee())

View File

@ -11,6 +11,7 @@ import org.qortal.data.transaction.TransactionData;
import org.qortal.naming.Name;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import com.google.common.base.Utf8;
@ -54,9 +55,9 @@ public class SellNameTransaction extends Transaction {
if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH;
// Check name is lowercase
if (!name.equals(name.toLowerCase()))
return ValidationResult.NAME_NOT_LOWER_CASE;
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name);

View File

@ -169,7 +169,7 @@ public abstract class Transaction {
BUYER_ALREADY_OWNER(14),
INVALID_AMOUNT(15),
INVALID_SELLER(16),
NAME_NOT_LOWER_CASE(17),
NAME_NOT_NORMALIZED(17),
INVALID_DESCRIPTION_LENGTH(18),
INVALID_OPTIONS_COUNT(19),
INVALID_OPTION_LENGTH(20),

View File

@ -54,7 +54,7 @@ public class UpdateNameTransaction extends Transaction {
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_LOWER_CASE;
return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name);
@ -76,7 +76,7 @@ public class UpdateNameTransaction extends Transaction {
// Check new name is in normalized form (no leading/trailing whitespace, etc.)
if (!newName.equals(Unicode.normalize(newName)))
return ValidationResult.NAME_NOT_LOWER_CASE;
return ValidationResult.NAME_NOT_NORMALIZED;
}
// Check new data size bounds (0 length means don't update data)

View File

@ -15,6 +15,7 @@ import org.qortal.data.voting.VoteOnPollData;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.repository.VotingRepository;
import org.qortal.utils.Unicode;
import org.qortal.voting.Poll;
import com.google.common.base.Utf8;
@ -58,9 +59,9 @@ public class VoteOnPollTransaction extends Transaction {
if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH;
// Check poll name is lowercase
if (!pollName.equals(pollName.toLowerCase()))
return ValidationResult.NAME_NOT_LOWER_CASE;
// Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!pollName.equals(Unicode.normalize(pollName)))
return ValidationResult.NAME_NOT_NORMALIZED;
VotingRepository votingRepository = this.repository.getVotingRepository();

View File

@ -12,6 +12,7 @@ public class Poll {
private PollData pollData;
// Other useful constants
public static final int MIN_NAME_SIZE = 3;
public static final int MAX_NAME_SIZE = 400;
public static final int MAX_DESCRIPTION_SIZE = 4000;
public static final int MAX_OPTIONS = 100;