[gmime] Report invalid message header parameters (#41)



commit 14671817dc1a64d8840b2f612cd143f29d55ecbf
Author: albrechtd <albrecht dress arcor de>
Date:   Tue Jan 9 20:08:22 2018 +0100

    Report invalid message header parameters (#41)
    
    The warning is triggered when a parameter value is missing, the parameter name
    or value are malformed, or the parameter list ends with a ';'.  This is
    typically not critical, but may indicate a spam message.

 examples/msgcheck.c          |    2 ++
 gmime/gmime-param.c          |    3 ++-
 gmime/gmime-parser-options.h |    2 ++
 3 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/examples/msgcheck.c b/examples/msgcheck.c
index 83cc893..88addef 100644
--- a/examples/msgcheck.c
+++ b/examples/msgcheck.c
@@ -44,6 +44,8 @@ errcode2str(GMimeParserWarning errcode)
                return "invalid Content-Type";
        case GMIME_WARN_INVALID_RFC2047_HEADER_VALUE:
                return "invalid RFC 2047 encoded header value";
+       case GMIME_WARN_INVALID_PARAMETER:
+               return "invalid header parameter";
        case GMIME_WARN_MALFORMED_MULTIPART:
                return "malformed multipart";
        case GMIME_WARN_TRUNCATED_MESSAGE:
diff --git a/gmime/gmime-param.c b/gmime/gmime-param.c
index 5d2331c..018e4b9 100644
--- a/gmime/gmime-param.c
+++ b/gmime/gmime-param.c
@@ -1108,7 +1108,8 @@ decode_param (GMimeParserOptions *options, const char **in, char **namep, char *
                *namep = name;
                *in = inptr;
                return TRUE;
-       }
+       } else
+               _g_mime_parser_options_warn (options, offset, GMIME_WARN_INVALID_PARAMETER, name);
        
        g_free (value);
        g_free (name);
diff --git a/gmime/gmime-parser-options.h b/gmime/gmime-parser-options.h
index ec5b5b3..4e5a747 100644
--- a/gmime/gmime-parser-options.h
+++ b/gmime/gmime-parser-options.h
@@ -48,6 +48,7 @@ typedef enum {
  * @GMIME_WARN_UNENCODED_8BIT_HEADER: a header contains unencoded 8-bit characters
  * @GMIME_WARN_INVALID_CONTENT_TYPE: invalid content type, assume `application/octet-stream`
  * @GMIME_WARN_INVALID_RFC2047_HEADER_VALUE: invalid RFC 2047 encoded header value
+ * @GMIME_WARN_INVALID_PARAMETER: invalid header parameter
  * @GMIME_WARN_MALFORMED_MULTIPART: no items in a `multipart/...`
  * @GMIME_WARN_TRUNCATED_MESSAGE: the message is truncated
  * @GMIME_WARN_MALFORMED_MESSAGE: the message is malformed
@@ -65,6 +66,7 @@ typedef enum {
        GMIME_WARN_UNENCODED_8BIT_HEADER,
        GMIME_WARN_INVALID_CONTENT_TYPE,
        GMIME_WARN_INVALID_RFC2047_HEADER_VALUE,
+       GMIME_WARN_INVALID_PARAMETER,
        GMIME_WARN_MALFORMED_MULTIPART,
        GMIME_WARN_TRUNCATED_MESSAGE,
        GMIME_WARN_MALFORMED_MESSAGE,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]