]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Allow query parameters for files.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 11 Jul 2015 20:58:32 +0000 (21:58 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 11 Jul 2015 20:58:32 +0000 (21:58 +0100)
src/libserver/protocol.c
test/functional/cases/scan_file.sh

index f9b2f0f3beab75ece6664cfbbbe067c0c726374e..761b04a30a18ea4f2598603e209f8fa2ea47fa7b 100644 (file)
@@ -252,7 +252,30 @@ rspamd_protocol_handle_url (struct rspamd_task *task,
                /* In case if we have a query, we need to store it somewhere */
                task->msg.start = msg->url->str + u.field_data[UF_QUERY].off;
                task->msg.len = u.field_data[UF_QUERY].len;
-               task->flags |= RSPAMD_TASK_FLAG_FILE;
+
+               /* Check URL query parameters */
+               p = memchr (task->msg.start, '=', task->msg.len);
+
+               if (p != NULL) {
+                       if (p != task->msg.start &&
+                               (memcmp (task->msg.start, "file",
+                                       (p - task->msg.start)) == 0 ||
+                               memcmp (task->msg.start, "path",
+                                       (p - task->msg.start)) == 0)) {
+                               task->flags |= RSPAMD_TASK_FLAG_FILE;
+                               task->msg.start = p + 1;
+                               task->msg.len -= (p - task->msg.start) + 1;
+                               task->flags |= RSPAMD_TASK_FLAG_FILE;
+                       }
+                       else {
+                               msg_err ("invalid query parameter: %*s", task->msg.len,
+                                               task->msg.start);
+                       }
+               }
+               else {
+                       /* Just file url afterwards */
+                       task->flags |= RSPAMD_TASK_FLAG_FILE;
+               }
        }
 
        return TRUE;
index b4ec293b46d9a734b30d10e893f9a9099ff73ede..63626cae6796592f1253ac0f65f364eaabe95dd7 100644 (file)
@@ -5,4 +5,10 @@
 export RSPAMD_CONFIG="$TEST_DIRNAME/configs/trivial.conf"
 run_rspamd
 run perl "$TEST_DIRNAME/cases/scan_file.pl" "$TEST_DIRNAME/messages/gtube.eml"
+check_output 'GTUBE'
+
+run perl "$TEST_DIRNAME/cases/scan_file.pl" "file=$TEST_DIRNAME/messages/gtube.eml"
+check_output 'GTUBE'
+
+run perl "$TEST_DIRNAME/cases/scan_file.pl" "path=$TEST_DIRNAME/messages/gtube.eml"
 check_output 'GTUBE'
\ No newline at end of file