{
struct expression_argument *arg;
GList *headerlist;
+ char *c;
if (args == NULL || task == NULL) {
return FALSE;
}
arg = get_function_arg (args->data, task, TRUE);
- if (arg->type == EXPRESSION_ARGUMENT_BOOL) {
+ if (!arg || arg->type == EXPRESSION_ARGUMENT_BOOL) {
msg_warn ("rspamd_header_exists: invalid argument to function is passed");
return FALSE;
}
g_list_free (headerlist);
return TRUE;
}
+ else {
+ /* Also check in raw headers */
+ if ((c = strstr (task->raw_headers, (char *)arg->data)) != NULL &&
+ (c == task->raw_headers || *(c - 1) == '\n')) {
+ return TRUE;
+ }
+ }
return FALSE;
}