param->prev = param;
}
+ gboolean invalid_utf = FALSE;
+
+ param->value.begin = rspamd_mime_header_decode (pool, param->value.begin,
+ param->value.len, &invalid_utf);
+ param->value.len = strlen (param->value.begin);
+
+ if (invalid_utf) {
+ param->flags |= RSPAMD_CONTENT_PARAM_BROKEN;
+ }
+
proc (pool, param, procd);
}
}
RSPAMD_FTOK_ASSIGN (&srch, "name");
if (!rspamd_ftok_icase_equal (¶m->name, &srch)) {
/* Just lowercase */
- rspamd_str_lc ((gchar *) param->value.begin, param->value.len);
+ rspamd_str_lc_utf8 ((gchar *) param->value.begin, param->value.len);
}
}
}
gsize hlen;
cd = NULL;
- if (cur->decoded) {
- hlen = strlen (cur->decoded);
- cd = rspamd_content_disposition_parse (cur->decoded, hlen,
+ if (cur->value) {
+ hlen = strlen (cur->value);
+ cd = rspamd_content_disposition_parse (cur->value, hlen,
task->task_pool);
}
if (hdr != NULL) {
DL_FOREACH (hdr, cur) {
- ct = rspamd_content_type_parse (cur->decoded, strlen (cur->decoded),
+ ct = rspamd_content_type_parse (cur->value, strlen (cur->value),
task->task_pool);
/* Here we prefer multipart content-type or any content-type */
}
else {
DL_FOREACH (hdr, cur) {
- ct = rspamd_content_type_parse (cur->decoded, strlen (cur->decoded),
+ ct = rspamd_content_type_parse (cur->value, strlen (cur->value),
task->task_pool);
/* Here we prefer multipart content-type or any content-type */