diff --git a/src/dap_enc_dilithium.c b/src/dap_enc_dilithium.c
index 265299e8d4ab042dcd123804d7c7ffe59edfd0c2..04cddb4a3af340dc78862ea9812dd163572e4a0c 100755
--- a/src/dap_enc_dilithium.c
+++ b/src/dap_enc_dilithium.c
@@ -133,13 +133,13 @@ uint8_t* dap_enc_dilithium_write_signature(dilithium_signature_t* a_sign, size_t
 /* Deserialize a signature */
 dilithium_signature_t* dap_enc_dilithium_read_signature(uint8_t *a_buf, size_t a_buflen)
 {
-    if(!a_buf || a_buflen < (sizeof(size_t) + sizeof(dilithium_kind_t)))
+    if( !a_buf || (a_buflen < (sizeof(size_t) + sizeof(dilithium_kind_t)) )  )
         return NULL ;
     dilithium_kind_t kind;
-    size_t l_buflen = 0;
-    memcpy(&l_buflen, a_buf, sizeof(size_t));
+    size_t l_buflen_internal = 0;
+    memcpy(&l_buflen_internal, a_buf, sizeof(size_t));
     memcpy(&kind, a_buf + sizeof(size_t), sizeof(dilithium_kind_t));
-    if(l_buflen != a_buflen)
+    if(l_buflen_internal != a_buflen)
         return NULL ;
     dilithium_param_t p;
     if(!dilithium_params_init(&p, kind))
diff --git a/src/dap_sign.c b/src/dap_sign.c
index 75524217e8aff1adc4e291a6f569c23bb097ec8d..6db1f549bf5acce9a36fc5c960475e2b08a6d91a 100755
--- a/src/dap_sign.c
+++ b/src/dap_sign.c
@@ -319,34 +319,50 @@ int dap_sign_verify(dap_sign_t * a_chain_sign, const void * a_data, const size_t
 {
     int l_ret;
     if (!a_chain_sign || !a_data)
-        return -1;
+        return -2;
     dap_enc_key_t * l_key = dap_sign_to_enc_key(a_chain_sign);
-    size_t l_sign_size = a_chain_sign->header.sign_size;
-    size_t l_sign_ser_size;
-    uint8_t *l_sign_ser = dap_sign_get_sign(a_chain_sign, &l_sign_ser_size);
+
+    if ( ! l_key ){
+        log_it(L_WARNING,"Incorrect signature, can't extract key");
+        return -3;
+    }
+    size_t l_sign_data_ser_size;
+    uint8_t *l_sign_data_ser = dap_sign_get_sign(a_chain_sign, &l_sign_data_ser_size);
+
+    if ( ! l_sign_data_ser ){
+        log_it(L_WARNING,"Incorrect signature, can't extract serialized signature's data ");
+        return -4;
+    }
+
+    size_t l_sign_data_size = a_chain_sign->header.sign_size;
     // deserialize signature
-    uint8_t * l_sign = dap_enc_key_deserealize_sign(l_key->type, l_sign_ser, &l_sign_size);
+    uint8_t * l_sign_data = dap_enc_key_deserealize_sign(l_key->type, l_sign_data_ser, &l_sign_data_size);
+
+    if ( ! l_sign_data ){
+        log_it(L_WARNING,"Incorrect signature, can't deserialize signature's data");
+        return -5;
+    }
 
     //uint8_t * l_sign = a_chain_sign->pkey_n_sign + a_chain_sign->header.sign_pkey_size;
     switch (l_key->type) {
-    case DAP_ENC_KEY_TYPE_SIG_TESLA:
-    case DAP_ENC_KEY_TYPE_SIG_PICNIC:
-    case DAP_ENC_KEY_TYPE_SIG_DILITHIUM:
-        if(l_key->dec_na(l_key, a_data, a_data_size, l_sign, l_sign_size) > 0)
-            l_ret = 0;
-        else
-            l_ret = 1;
-        break;
-    case DAP_ENC_KEY_TYPE_SIG_BLISS:
-        if(dap_enc_sig_bliss_verify_sign(l_key, a_data, a_data_size, l_sign, l_sign_size) != BLISS_B_NO_ERROR)
-            l_ret = 0;
-        else
-            l_ret = 1;
-        break;
-    default:
-        l_ret = -1;
-    }
-    dap_enc_key_signature_delete(l_key->type, l_sign);
+        case DAP_ENC_KEY_TYPE_SIG_TESLA:
+        case DAP_ENC_KEY_TYPE_SIG_PICNIC:
+        case DAP_ENC_KEY_TYPE_SIG_DILITHIUM:
+            if(l_key->dec_na(l_key, a_data, a_data_size, l_sign_data, l_sign_data_size) > 0)
+                l_ret = 0;
+            else
+                l_ret = 1;
+            break;
+        case DAP_ENC_KEY_TYPE_SIG_BLISS:
+            if(dap_enc_sig_bliss_verify_sign(l_key, a_data, a_data_size, l_sign_data, l_sign_data_size) != BLISS_B_NO_ERROR)
+                l_ret = 0;
+            else
+                l_ret = 1;
+            break;
+        default:
+            l_ret = -6;
+    }
+    dap_enc_key_signature_delete(l_key->type, l_sign_data);
     dap_enc_key_delete(l_key);
     return l_ret;
 }