commit bc6ec09: [Minor] Fix empty strings import

Vsevolod Stakhov vsevolod at rspamd.com
Fri Sep 23 19:49:03 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-09-23 20:43:39 +0100
URL: https://github.com/rspamd/rspamd/commit/bc6ec09a56659b35317ac4413a43e3bf47bc0e28 (HEAD -> master)

[Minor] Fix empty strings import
Issue: #4281

---
 contrib/libucl/lua_ucl.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/contrib/libucl/lua_ucl.c b/contrib/libucl/lua_ucl.c
index 88cdf3664..0d934b771 100644
--- a/contrib/libucl/lua_ucl.c
+++ b/contrib/libucl/lua_ucl.c
@@ -484,7 +484,16 @@ ucl_object_lua_fromelt (lua_State *L, int idx, ucl_string_flags_t flags)
 		str = lua_tolstring (L, idx, &sz);
 
 		if (str) {
-			obj = ucl_object_fromstring_common (str, sz, flags);
+			/*
+			 * ucl_object_fromstring_common has a `logic` to use strlen if sz is zero
+			 * which is totally broken...
+			 */
+			if (sz > 0) {
+				obj = ucl_object_fromstring_common(str, sz, flags);
+			}
+			else {
+				obj = ucl_object_fromstring_common("", sz, flags);
+			}
 		}
 		else {
 			obj = ucl_object_typed_new (UCL_NULL);
@@ -511,7 +520,12 @@ ucl_object_lua_fromelt (lua_State *L, int idx, ucl_string_flags_t flags)
 			struct _rspamd_lua_text *t = lua_touserdata (L, idx);
 
 			if (t) {
-				obj = ucl_object_fromstring_common(t->start, t->len, 0);
+				if (t->len >0) {
+					obj = ucl_object_fromstring_common(t->start, t->len, 0);
+				}
+				else {
+					obj = ucl_object_fromstring_common("", 0, 0);
+				}
 
 				/* Binary text */
 				if (t->flags & (1u << 5u)) {


More information about the Commits mailing list