]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[CritFix] Fix \0 processing when doing RSA sign
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Oct 2018 15:32:32 +0000 (16:32 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Oct 2018 15:33:06 +0000 (16:33 +0100)
src/lua/lua_rsa.c

index 39433a167b6ec51e2088532ed9ddeaedc2cfddd0..58607f92c5a8eaab1b6b920a49835c08425a5bf7 100644 (file)
@@ -609,14 +609,15 @@ lua_rsa_verify_memory (lua_State *L)
        RSA *rsa;
        rspamd_fstring_t *signature;
        const gchar *data;
+       gsize sz;
        gint ret;
 
        rsa = lua_check_rsa_pubkey (L, 1);
        signature = lua_check_rsa_sign (L, 2);
-       data = luaL_checkstring (L, 3);
+       data = luaL_checklstring (L, 3, &sz);
 
        if (rsa != NULL && signature != NULL && data != NULL) {
-               ret = RSA_verify (NID_sha256, data, strlen (data),
+               ret = RSA_verify (NID_sha256, data, sz,
                                signature->str, signature->len, rsa);
 
                if (ret == 0) {
@@ -651,14 +652,15 @@ lua_rsa_sign_memory (lua_State *L)
        RSA *rsa;
        rspamd_fstring_t *signature, **psig;
        const gchar *data;
+       gsize sz;
        gint ret;
 
        rsa = lua_check_rsa_privkey (L, 1);
-       data = luaL_checkstring (L, 2);
+       data = luaL_checklstring (L, 2, &sz);
 
        if (rsa != NULL && data != NULL) {
                signature = rspamd_fstring_sized_new (RSA_size (rsa));
-               ret = RSA_sign (NID_sha256, data, strlen (data),
+               ret = RSA_sign (NID_sha256, data, sz,
                                signature->str, (guint *)&signature->len, rsa);
 
                if (ret != 1) {