hash table CHANGE accept NULL dict values
diff --git a/src/hash_table.c b/src/hash_table.c
index 0564eb9..e771006 100644
--- a/src/hash_table.c
+++ b/src/hash_table.c
@@ -265,7 +265,12 @@
 {
     LY_ERR result;
 
-    LY_CHECK_ARG_RET(ctx, ctx, value, LY_EINVAL);
+    LY_CHECK_ARG_RET(ctx, ctx, str_p, LY_EINVAL);
+
+    if (!value) {
+        *str_p = NULL;
+        return LY_SUCCESS;
+    }
 
     if (!len) {
         len = strlen(value);
@@ -283,7 +288,12 @@
 {
     LY_ERR result;
 
-    LY_CHECK_ARG_RET(ctx, ctx, value, LY_EINVAL);
+    LY_CHECK_ARG_RET(ctx, ctx, str_p, LY_EINVAL);
+
+    if (!value) {
+        *str_p = NULL;
+        return LY_SUCCESS;
+    }
 
     pthread_mutex_lock((pthread_mutex_t *)&ctx->dict.lock);
     result = dict_insert(ctx, value, strlen(value), 1, str_p);
diff --git a/tests/utests/basic/test_hash_table.c b/tests/utests/basic/test_hash_table.c
index aa6ac3d..88cabb1 100644
--- a/tests/utests/basic/test_hash_table.c
+++ b/tests/utests/basic/test_hash_table.c
@@ -30,7 +30,7 @@
     assert_int_equal(LY_EINVAL, lydict_insert_zc(NULL, NULL, NULL));
     CHECK_LOG("Invalid argument ctx (lydict_insert_zc()).", NULL);
     assert_int_equal(LY_EINVAL, lydict_insert_zc(UTEST_LYCTX, NULL, NULL));
-    CHECK_LOG_CTX("Invalid argument value (lydict_insert_zc()).", NULL);
+    CHECK_LOG_CTX("Invalid argument str_p (lydict_insert_zc()).", NULL);
 }
 
 static void