]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Place obfuscated check properly to count u16 characters and not u8
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 17 Jan 2022 21:26:40 +0000 (21:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 17 Jan 2022 21:26:40 +0000 (21:26 +0000)
src/libmime/archives.c

index 12a35ae5ccc6934a46d60e8248370d6cb96af5e1..3b0e898420383af072bd84220f33ca07feb4208c 100644 (file)
@@ -96,6 +96,21 @@ rspamd_archive_file_try_utf (struct rspamd_task *task,
                        return NULL;
                }
 
+               int i = 0;
+
+               while (i < r) {
+                       UChar32 uc;
+
+                       U16_NEXT(tmp, i, r, uc);
+
+                       if (IS_ZERO_WIDTH_SPACE(uc) || u_iscntrl(uc)) {
+                               msg_info_task("control character in archive file name found: 0x%02xd "
+                                                         "(filename=%T)", uc, arch->archive_name);
+                               fentry->flags |= RSPAMD_ARCHIVE_FILE_OBFUSCATED;
+                               break;
+                       }
+               }
+
                clen = ucnv_getMaxCharSize (utf8_converter);
                dlen = UCNV_GET_MAX_BYTES_FOR_STRING (r, clen);
                res = g_string_sized_new (dlen);
@@ -112,21 +127,6 @@ rspamd_archive_file_try_utf (struct rspamd_task *task,
                        return NULL;
                }
 
-               int i = 0;
-
-               while (i < r) {
-                       UChar32 uc;
-
-                       U16_NEXT(tmp, i, r, uc);
-
-                       if (IS_ZERO_WIDTH_SPACE(uc) || u_iscntrl(uc)) {
-                               msg_info_task("control character in archive file name found: 0x%02xd "
-                                                         "(filename=%T)", uc, arch->archive_name);
-                               fentry->flags |= RSPAMD_ARCHIVE_FILE_OBFUSCATED;
-                               break;
-                       }
-               }
-
                g_free (tmp);
                res->len = r;