From d16663f0a934bc0d363bd1c8662edcb6dd07fb66 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sun, 19 Dec 2021 20:23:57 +0000 Subject: [PATCH] Handle missing case in names integrity check caused by an UPDATE_NAME transaction with a blank "newName" value. This is a valid transaction but not one that the integrity check was handling properly. Should fix NullPointerException on node startup. --- .../controller/repository/NamesDatabaseIntegrityCheck.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java b/src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java index f12bd14a..7d845a7b 100644 --- a/src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java +++ b/src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java @@ -187,7 +187,12 @@ public class NamesDatabaseIntegrityCheck { // The old name will then be unregistered, or re-registered. // FUTURE: check database integrity for names that have been updated and then the original name re-registered else if (Objects.equals(updateNameTransactionData.getName(), registeredName)) { - NameData newNameData = repository.getNameRepository().fromName(updateNameTransactionData.getNewName()); + String newName = updateNameTransactionData.getNewName(); + if (newName == null || newName.length() == 0) { + // If new name is blank (or maybe null, just to be safe), it means that it stayed the same + newName = registeredName; + } + NameData newNameData = repository.getNameRepository().fromName(newName); if (!Objects.equals(creator.getAddress(), newNameData.getOwner())) { LOGGER.info("Error: registered name {} is owned by {}, but it should be {}", updateNameTransactionData.getNewName(), newNameData.getOwner(), creator.getAddress());