]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Archives: Fix gzip file detection error
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Jan 2019 17:54:02 +0000 (17:54 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Jan 2019 17:54:02 +0000 (17:54 +0000)
src/libmime/archives.c

index 56e8805775ea894467e8b9b9bc8acb833633c0f0..f546570a99db91fef41d07e3b4fcee165285933f 100644 (file)
@@ -1757,9 +1757,19 @@ rspamd_archive_process_gzip (struct rspamd_task *task,
                                const gchar *fname_start = part->cd->filename.begin;
 
                                f = g_malloc0 (sizeof (*f));
-                               f->fname = g_string_sized_new (dot_pos - slash_pos);
-                               g_string_append_len (f->fname, fname_start,
-                                               dot_pos - fname_start);
+
+                               if (memchr (fname_start, '.', part->cd->filename.len) != dot_pos) {
+                                       /* Double dots, something like foo.exe.gz */
+                                       f->fname = g_string_sized_new (dot_pos - fname_start);
+                                       g_string_append_len (f->fname, fname_start,
+                                                       dot_pos - fname_start);
+                               }
+                               else {
+                                       /* Single dot, something like foo.gzz */
+                                       f->fname = g_string_sized_new (part->cd->filename.len);
+                                       g_string_append_len (f->fname, fname_start,
+                                                       part->cd->filename.len);
+                               }
 
                                msg_debug_archive ("fallback to gzip filename based on cd: %v",
                                                f->fname);