[gmime] Modified param value parser to be less strict
- From: Jeffrey Stedfast <fejj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gmime] Modified param value parser to be less strict
- Date: Tue, 31 Aug 2010 01:05:22 +0000 (UTC)
commit 7fed9045689eb543953bf592086df89dc6ad74d4
Author: Jeffrey Stedfast <fejj gnome org>
Date: Mon Aug 30 21:05:00 2010 -0400
Modified param value parser to be less strict
2010-08-30 Jeffrey Stedfast <fejj novell com>
* gmime/gmime-param.c (decode_token): Make less strict in order
* to
handle unquoted boundary values containing '=' (and other
illegal
characters).
ChangeLog | 6 ++++++
gmime/gmime-param.c | 13 +++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 43ca60a..eb4e88e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-30 Jeffrey Stedfast <fejj novell com>
+
+ * gmime/gmime-param.c (decode_token): Make less strict in order to
+ handle unquoted boundary values containing '=' (and other illegal
+ characters).
+
2010-08-26 Jeffrey Stedfast <fejj novell com>
* gmime/internet-address.c (_internet_address_set_name): Don't
diff --git a/gmime/gmime-param.c b/gmime/gmime-param.c
index 5d3e3bf..7a1f68a 100644
--- a/gmime/gmime-param.c
+++ b/gmime/gmime-param.c
@@ -173,8 +173,21 @@ decode_token (const char **in)
decode_lwsp (&inptr);
start = inptr;
+#ifdef STRICT_PARSER
while (is_ttoken (*inptr))
inptr++;
+#else
+ /* Broken mail clients like to make our lives difficult. Scan
+ * for a ';' instead of trusting that the client followed the
+ * specification. */
+ while (*inptr && *inptr != ';')
+ inptr++;
+
+ /* Scan backwards over any trailing lwsp */
+ while (inptr > start && is_lwsp (inptr[-1]))
+ inptr--;
+#endif
+
if (inptr > start) {
*in = inptr;
return g_strndup (start, (size_t) (inptr - start));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]