From c67d5170779b9d076f02c69ef68fd04d1a6f51e6 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Wed, 29 Mar 2023 17:15:41 +0000
Subject: [PATCH] Fix features 8375

---
 modules/net/srv/dap_chain_net_srv_order.c | 27 +++++++++--------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c
index 55763796b9..f817e0470f 100644
--- a/modules/net/srv/dap_chain_net_srv_order.c
+++ b/modules/net/srv/dap_chain_net_srv_order.c
@@ -292,7 +292,7 @@ dap_chain_net_srv_order_t *dap_chain_net_srv_order_compose(dap_chain_net_t *a_ne
         return NULL;
     }
     if (!a_key) {
-        log_it(L_WARNING, "Order mast have a sign");
+        log_it(L_WARNING, "The key with which the order should be signed is not specified.");
         return NULL;
     }
     dap_chain_net_srv_order_t *l_order;
@@ -608,7 +608,7 @@ static void s_srv_order_callback_notify(dap_global_db_context_t *a_context, dap_
         if (a_obj->value && a_obj->type == DAP_DB$K_OPTYPE_ADD &&
                 dap_config_get_item_bool_default(g_config, "srv", "order_signed_only", true)) {
             dap_chain_net_srv_order_t *l_order = (dap_chain_net_srv_order_t *)a_obj->value;
-            if (l_order->version != 2) {
+            if (l_order->version != 3) {
                 dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
             } else {
                 dap_sign_t *l_sign = (dap_sign_t *)(l_order->ext_n_sign + l_order->ext_size);
@@ -619,20 +619,15 @@ static void s_srv_order_callback_notify(dap_global_db_context_t *a_context, dap_
                     dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
                 }
                 // Check new order is signs delegated key
-                for (size_t l_offset = 0; l_offset < l_max_size;) {
-                    dap_sign_t *l_tmp_sign = (dap_sign_t*)(l_sign + l_offset);
-                    l_offset += dap_sign_get_size(l_tmp_sign);
-                    dap_hash_fast_t l_pkey_hash = {0};
-                    dap_sign_get_pkey_hash(l_sign, &l_pkey_hash);
-                    dap_chain_addr_t l_addr = {0};
-                    dap_chain_addr_fill(&l_addr, l_tmp_sign->header.type, &l_pkey_hash, l_net->pub.id);
-                    if (!dap_chain_net_srv_stake_key_delegated(&l_addr)) {
-                        char *l_pkey_hash_str = dap_hash_fast_to_str_new(&l_pkey_hash);
-                        log_it(L_ERROR, "Order %s signed by the non-delegated public key %s.", a_obj->key, l_pkey_hash_str);
-                        DAP_DELETE(l_pkey_hash_str);
-                        dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
-                        break;
-                    }
+                dap_hash_fast_t l_pkey_hash = {0};
+                dap_sign_get_pkey_hash(l_sign, &l_pkey_hash);
+                dap_chain_addr_t l_addr = {0};
+                dap_chain_addr_fill(&l_addr, l_sign->header.type, &l_pkey_hash, l_net->pub.id);
+                if (!dap_chain_net_srv_stake_key_delegated(&l_addr)) {
+                    char *l_pkey_hash_str = dap_hash_fast_to_str_new(&l_pkey_hash);
+                    log_it(L_ERROR, "Order %s signed by the non-delegated public key %s.", a_obj->key, l_pkey_hash_str);
+                    DAP_DELETE(l_pkey_hash_str);
+                    dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
                 }
                 /*dap_chain_hash_fast_t l_pkey_hash;
                 if (!dap_sign_get_pkey_hash(l_sign, &l_pkey_hash)) {
-- 
GitLab