diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php
index 12ea77d0b..4d70a68b1 100644
--- a/community_server/src/Controller/AppRequestsController.php
+++ b/community_server/src/Controller/AppRequestsController.php
@@ -156,6 +156,9 @@ class AppRequestsController extends AppController
if($required_fields !== true) {
return $this->returnJson($required_fields);
}
+ if(!isset($params['memo']) || strlen($params['memo']) < 5 || strlen($params['memo']) > 150) {
+ return $this->returnJson(['state' => 'error', 'msg' => 'memo is not set or not in expected range [5;150]']);
+ }
$params['transaction_type'] = 'transfer';
$requestAnswear = $this->JsonRequestClient->sendRequest(json_encode($params), '/createTransaction');
diff --git a/community_server/src/Controller/TransactionSendCoinsController.php b/community_server/src/Controller/TransactionSendCoinsController.php
index 033e2343f..1018309cc 100644
--- a/community_server/src/Controller/TransactionSendCoinsController.php
+++ b/community_server/src/Controller/TransactionSendCoinsController.php
@@ -237,6 +237,11 @@ class TransactionSendCoinsController extends AppController
$this->set('timeUsed', microtime(true) - $startTime);
return;
}
+ if($answear_data['msg'] === 'memo is not set or not in expected range [5;150]') {
+ $this->Flash->error(__('Ein Verwendungszweck zwischen 5 und 150 Zeichen wird benötig!'));
+ $this->set('timeUsed', microtime(true) - $startTime);
+ return;
+ }
} else if($answear_data['state'] === 'not found' && $answear_data['msg'] === 'receiver not found') {
$this->Flash->error(__('Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto schon angelegt?'));
$this->set('timeUsed', microtime(true) - $startTime);
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue
index 55d38be22..3a38d49db 100644
--- a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue
+++ b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue
@@ -84,7 +84,22 @@
style="font-size: xx-large; padding-left: 20px"
>
- {{ $t('form.memo') }}
+
+
+
+ {{ $t('form.memo') }}
+
+ {{ error }}
+
+
diff --git a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp
index 786af9d71..7fb40913e 100644
--- a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp
+++ b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp
@@ -108,6 +108,9 @@ Poco::JSON::Object* JsonCreateTransaction::transfer(Poco::Dynamic::Var params)
else {
result = stateError("parameter format unknown");
}
+ if (mMemo.size() < 5 || mMemo.size() > 150) {
+ result = stateError("memo is not set or not in expected range [5;150]");
+ }
if (result) {
mm->releaseMemory(target_pubkey);
return result;
diff --git a/login_server/src/cpp/model/gradido/TransactionBase.h b/login_server/src/cpp/model/gradido/TransactionBase.h
index 6a82b2a28..9f5a87d85 100644
--- a/login_server/src/cpp/model/gradido/TransactionBase.h
+++ b/login_server/src/cpp/model/gradido/TransactionBase.h
@@ -31,7 +31,8 @@ namespace model {
TRANSACTION_VALID_INVALID_AMOUNT,
TRANSACTION_VALID_INVALID_PUBKEY,
TRANSACTION_VALID_INVALID_GROUP_ALIAS,
- TRANSACTION_VALID_INVALID_SIGN
+ TRANSACTION_VALID_INVALID_SIGN,
+ TRANSACTION_VALID_INVALID_MEMO
};
const char* TransactionValidationToString(TransactionValidation result);
diff --git a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp
index 759d79690..ef0d3a3f6 100644
--- a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp
+++ b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp
@@ -186,6 +186,10 @@ namespace model {
addError(new Error(function_name, "sender and receiver are the same"));
return TRANSACTION_VALID_INVALID_PUBKEY;
}
+ if (mMemo.size() < 5 || mMemo.size() > 150) {
+ addError(new Error(function_name, "memo is not set or not in expected range [5;150]"));
+ return TRANSACTION_VALID_INVALID_MEMO;
+ }
return TRANSACTION_VALID_OK;
}