aboutsummaryrefslogtreecommitdiff
path: root/libsylph
diff options
context:
space:
mode:
Diffstat (limited to 'libsylph')
-rw-r--r--libsylph/procmime.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libsylph/procmime.c b/libsylph/procmime.c
index 775c30a8..243a0474 100644
--- a/libsylph/procmime.c
+++ b/libsylph/procmime.c
@@ -402,7 +402,7 @@ static gchar *procmime_find_parameter_delimiter(const gchar *param,
while (*p) {
if (*p == '=')
break;
- else if (*p == ';' || g_ascii_isspace(*p)) {
+ else if (*p == ';' || *p == '\r' || *p == '\n') {
delim = p;
break;
}
@@ -415,6 +415,8 @@ static gchar *procmime_find_parameter_delimiter(const gchar *param,
*eq = p;
++p;
+ while (g_ascii_isspace(*p))
+ ++p;
if (*p == '"') {
quoted = TRUE;
++p;
@@ -424,7 +426,7 @@ static gchar *procmime_find_parameter_delimiter(const gchar *param,
if (quoted == TRUE) {
if (*p == '"')
quoted = FALSE;
- } else if (*p == ';' || g_ascii_isspace(*p)) {
+ } else if (*p == ';' || *p == '\r' || *p == '\n') {
delim = p;
break;
}
@@ -498,6 +500,7 @@ static MimeParams *procmime_parse_mime_parameter(const gchar *str)
param = g_strdup(p);
name = g_strndup(p, eq - p);
+ g_strchomp(name);
if (*name != '*' && (ast = strchr(name, '*'))) {
const gchar *next = ast + 1;
@@ -526,6 +529,7 @@ static MimeParams *procmime_parse_mime_parameter(const gchar *str)
}
value = g_strdup(param + (eq - p) + 1);
+ g_strstrip(value);
if (*value == '"')
extract_quote(value, '"');