]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
SUBJ_ALL_CAPS is overkill 4953/head
authorIKEDA Soji <mail@ikedas.net>
Thu, 2 May 2024 13:34:09 +0000 (22:34 +0900)
committerIKEDA Soji <mail@ikedas.net>
Fri, 3 May 2024 00:07:19 +0000 (09:07 +0900)
It should consider characters in unicase scripts as being not uppercase.

src/lua/lua_util.c

index 3370a757dd016c41c905e76a90292fe12559d3c7..92f831f6f72a6a36122a8e51ff09548e09a6715f 100644 (file)
@@ -1421,7 +1421,7 @@ lua_util_is_uppercase(lua_State *L)
        LUA_TRACE_POINT;
        int32_t i = 0;
        UChar32 uc;
-       unsigned int nlc = 0, nuc = 0;
+       bool is_upper = false, is_lower = false, is_other = false;
 
        struct rspamd_lua_text *t = lua_check_text_or_string(L, 1);
        if (t) {
@@ -1433,15 +1433,20 @@ lua_util_is_uppercase(lua_State *L)
                        }
 
                        if (u_isupper(uc)) {
-                               nuc++;
+                               is_upper = true;
                        }
                        else if (u_islower(uc)) {
-                               nlc++;
+                               is_lower = true;
+                               break;
+                       }
+                       else if (u_charType(uc) == U_OTHER_LETTER) {
+                               is_other = true;
+                               break;
                        }
                }
        }
 
-       if (nuc > 0 && nlc == 0) {
+       if (is_upper && !is_lower && !is_other) {
                lua_pushboolean(L, TRUE);
        }
        else {