From bc6ec09a56659b35317ac4413a43e3bf47bc0e28 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 23 Sep 2022 20:43:39 +0100 Subject: [PATCH] [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)) { -- 2.39.5