commit 2e742c5: SUBJ_ALL_CAPS is overkill

IKEDA Soji mail at ikedas.net
Mon Jul 29 17:56:37 UTC 2024


Author: IKEDA Soji
Date: 2024-05-02 22:34:09 +0900
URL: https://github.com/rspamd/rspamd/commit/2e742c54918ea0d01fbba57148d140b664f4915c (refs/pull/4953/head)

SUBJ_ALL_CAPS is overkill
It should consider characters in unicase scripts as being not uppercase.

---
 src/lua/lua_util.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c
index 3370a757d..92f831f6f 100644
--- a/src/lua/lua_util.c
+++ b/src/lua/lua_util.c
@@ -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 {


More information about the Commits mailing list