diff options
-rw-r--r-- | src/lua/lua_util.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index f385b3ef2..7ff9d75f8 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -1037,8 +1037,7 @@ lua_util_decode_base64 (lua_State *L) LUA_TRACE_POINT; struct rspamd_lua_text *t; const gchar *s = NULL; - gsize inlen, outlen; - gboolean zero_copy = FALSE, grab_own = FALSE; + gsize inlen = 0, outlen; gint state = 0; guint save = 0; @@ -1055,31 +1054,15 @@ lua_util_decode_base64 (lua_State *L) } if (s != NULL) { - if (zero_copy) { - /* Decode in place */ - outlen = g_base64_decode_step (s, inlen, (guchar *)s, &state, &save); - t = lua_newuserdata (L, sizeof (*t)); - rspamd_lua_setclass (L, "rspamd{text}", -1); - t->start = s; - t->len = outlen; + t = lua_newuserdata (L, sizeof (*t)); + rspamd_lua_setclass (L, "rspamd{text}", -1); + t->len = (inlen / 4) * 3 + 3; + t->start = g_malloc (t->len); - if (grab_own) { - t->flags |= RSPAMD_TEXT_FLAG_OWN; - } - else { - t->flags = 0; - } - } - else { - t = lua_newuserdata (L, sizeof (*t)); - rspamd_lua_setclass (L, "rspamd{text}", -1); - t->len = (inlen / 4) * 3 + 3; - t->start = g_malloc (t->len); - outlen = g_base64_decode_step (s, inlen, (guchar *)t->start, - &state, &save); - t->len = outlen; - t->flags = RSPAMD_TEXT_FLAG_OWN; - } + rspamd_cryptobox_base64_decode (s, inlen, (guchar *)t->start, + &outlen); + t->len = outlen; + t->flags = RSPAMD_TEXT_FLAG_OWN; } else { lua_pushnil (L); |