]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Lua_text: Add randombytes constructor
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 4 May 2020 19:27:56 +0000 (20:27 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 4 May 2020 19:27:56 +0000 (20:27 +0100)
src/lua/lua_text.c

index 8ca30bbc06a38039f1da3a3d94906fd0289b0a3f..1550fb239fa69cfd07b6431f7fdf9a8662ad4062 100644 (file)
@@ -42,6 +42,13 @@ LUA_FUNCTION_DEF (text, fromstring);
  * @return {rspamd_text} resulting text
  */
 LUA_FUNCTION_DEF (text, null);
+/***
+ * @function rspamd_text.randombytes(nbytes)
+ * Creates rspamd_text with random bytes inside (raw bytes)
+ * @param {number} nbytes number of random bytes generated
+ * @return {rspamd_text} random bytes text
+ */
+LUA_FUNCTION_DEF (text, randombytes);
 
 /***
  * @function rspamd_text.fromtable(tbl[, delim])
@@ -176,6 +183,7 @@ static const struct luaL_reg textlib_f[] = {
                LUA_INTERFACE_DEF (text, fromtable),
                {"from_table", lua_text_fromtable},
                LUA_INTERFACE_DEF (text, null),
+               LUA_INTERFACE_DEF (text, randombytes),
                {NULL, NULL}
 };
 
@@ -282,6 +290,20 @@ lua_text_null (lua_State *L)
        return 1;
 }
 
+static gint
+lua_text_randombytes (lua_State *L)
+{
+       LUA_TRACE_POINT;
+       guint nbytes = luaL_checkinteger (L, 1);
+       struct rspamd_lua_text *out;
+
+       out = lua_new_text (L, NULL, nbytes, TRUE);
+       randombytes_buf ((char *)out->start, nbytes);
+       out->len = nbytes;
+
+       return 1;
+}
+
 #define MAX_REC 10
 
 static void