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

View File

@ -12,6 +12,7 @@ import org.qortal.data.transaction.TransactionData;
import org.qortal.data.voting.PollOptionData; import org.qortal.data.voting.PollOptionData;
import org.qortal.repository.DataException; import org.qortal.repository.DataException;
import org.qortal.repository.Repository; import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import org.qortal.voting.Poll; import org.qortal.voting.Poll;
import com.google.common.base.Utf8; import com.google.common.base.Utf8;
@ -51,8 +52,9 @@ public class CreatePollTransaction extends Transaction {
return ValidationResult.INVALID_ADDRESS; return ValidationResult.INVALID_ADDRESS;
// Check name size bounds // Check name size bounds
int pollNameLength = Utf8.encodedLength(this.createPollTransactionData.getPollName()); String pollName = this.createPollTransactionData.getPollName();
if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE) int pollNameLength = Utf8.encodedLength(pollName);
if (pollNameLength < Poll.MIN_NAME_SIZE || pollNameLength > Poll.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH; return ValidationResult.INVALID_NAME_LENGTH;
// Check description size bounds // Check description size bounds
@ -60,9 +62,9 @@ public class CreatePollTransaction extends Transaction {
if (pollDescriptionLength < 1 || pollDescriptionLength > Poll.MAX_DESCRIPTION_SIZE) if (pollDescriptionLength < 1 || pollDescriptionLength > Poll.MAX_DESCRIPTION_SIZE)
return ValidationResult.INVALID_DESCRIPTION_LENGTH; return ValidationResult.INVALID_DESCRIPTION_LENGTH;
// Check poll name is lowercase // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!this.createPollTransactionData.getPollName().equals(this.createPollTransactionData.getPollName().toLowerCase())) if (!pollName.equals(Unicode.normalize(pollName)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
// Check number of options // Check number of options
List<PollOptionData> pollOptions = this.createPollTransactionData.getPollOptions(); 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.) // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!assetName.equals(Unicode.normalize(assetName))) if (!assetName.equals(Unicode.normalize(assetName)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
// Check description size bounds // Check description size bounds
int assetDescriptionlength = Utf8.encodedLength(this.issueAssetTransactionData.getDescription()); 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.) // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name))) if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
// Check registrant has enough funds // Check registrant has enough funds
if (registrant.getConfirmedBalance(Asset.QORT) < this.registerNameTransactionData.getFee()) 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.naming.Name;
import org.qortal.repository.DataException; import org.qortal.repository.DataException;
import org.qortal.repository.Repository; import org.qortal.repository.Repository;
import org.qortal.utils.Unicode;
import com.google.common.base.Utf8; import com.google.common.base.Utf8;
@ -54,9 +55,9 @@ public class SellNameTransaction extends Transaction {
if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE) if (nameLength < 1 || nameLength > Name.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH; return ValidationResult.INVALID_NAME_LENGTH;
// Check name is lowercase // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(name.toLowerCase())) if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name); NameData nameData = this.repository.getNameRepository().fromName(name);

View File

@ -169,7 +169,7 @@ public abstract class Transaction {
BUYER_ALREADY_OWNER(14), BUYER_ALREADY_OWNER(14),
INVALID_AMOUNT(15), INVALID_AMOUNT(15),
INVALID_SELLER(16), INVALID_SELLER(16),
NAME_NOT_LOWER_CASE(17), NAME_NOT_NORMALIZED(17),
INVALID_DESCRIPTION_LENGTH(18), INVALID_DESCRIPTION_LENGTH(18),
INVALID_OPTIONS_COUNT(19), INVALID_OPTIONS_COUNT(19),
INVALID_OPTION_LENGTH(20), 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.) // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!name.equals(Unicode.normalize(name))) if (!name.equals(Unicode.normalize(name)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
NameData nameData = this.repository.getNameRepository().fromName(name); 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.) // Check new name is in normalized form (no leading/trailing whitespace, etc.)
if (!newName.equals(Unicode.normalize(newName))) 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) // 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.DataException;
import org.qortal.repository.Repository; import org.qortal.repository.Repository;
import org.qortal.repository.VotingRepository; import org.qortal.repository.VotingRepository;
import org.qortal.utils.Unicode;
import org.qortal.voting.Poll; import org.qortal.voting.Poll;
import com.google.common.base.Utf8; import com.google.common.base.Utf8;
@ -58,9 +59,9 @@ public class VoteOnPollTransaction extends Transaction {
if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE) if (pollNameLength < 1 || pollNameLength > Poll.MAX_NAME_SIZE)
return ValidationResult.INVALID_NAME_LENGTH; return ValidationResult.INVALID_NAME_LENGTH;
// Check poll name is lowercase // Check name is in normalized form (no leading/trailing whitespace, etc.)
if (!pollName.equals(pollName.toLowerCase())) if (!pollName.equals(Unicode.normalize(pollName)))
return ValidationResult.NAME_NOT_LOWER_CASE; return ValidationResult.NAME_NOT_NORMALIZED;
VotingRepository votingRepository = this.repository.getVotingRepository(); VotingRepository votingRepository = this.repository.getVotingRepository();

View File

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