summaryrefslogtreecommitdiffstats
path: root/rfc2231.c
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>1999-11-10 21:35:33 +0000
committerThomas Roessler <roessler@does-not-exist.org>1999-11-10 21:35:33 +0000
commitc2a6707d1d426e0ae0d2665c52787bbde67efc47 (patch)
treebfd1c4d1668e48c09b80c901bde59f063989b627 /rfc2231.c
parent62399c99417fc22fe10cf2f88e862b00d31cdc7a (diff)
Ignore empty MIME parameters.
Diffstat (limited to 'rfc2231.c')
-rw-r--r--rfc2231.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/rfc2231.c b/rfc2231.c
index e4a7dfdb..1011201c 100644
--- a/rfc2231.c
+++ b/rfc2231.c
@@ -56,6 +56,25 @@ static void rfc2231_free_parameter (struct rfc2231_parameter **);
static void rfc2231_join_continuations (PARAMETER **, struct rfc2231_parameter *);
static void rfc2231_list_insert (struct rfc2231_parameter **, struct rfc2231_parameter *);
+static void purge_empty_parameters (PARAMETER **headp)
+{
+ PARAMETER *p, *q, **last;
+
+ for (last = headp, p = *headp; p; p = q)
+ {
+ q = p->next;
+ if (!p->attribute || !p->value)
+ {
+ *last = q;
+ p->next = NULL;
+ mutt_free_parameter (&p);
+ }
+ else
+ last = &p->next;
+ }
+}
+
+
void rfc2231_decode_parameters (PARAMETER **headp)
{
PARAMETER *head = NULL;
@@ -70,8 +89,10 @@ void rfc2231_decode_parameters (PARAMETER **headp)
int encoded;
int index;
-
+
if (!headp) return;
+
+ purge_empty_parameters (headp);
for (last = &head, p = *headp; p; p = q)
{
@@ -134,6 +155,8 @@ void rfc2231_decode_parameters (PARAMETER **headp)
rfc2231_join_continuations (last, conthead);
*headp = head;
+
+ purge_empty_parameters (headp);
}
static struct rfc2231_parameter *rfc2231_new_parameter (void)