[gmime: 3/5] Don't use g_snprintf in gmime-filter-enriched.c



commit 28bbbd854e5e41db00b7132f6c6123ba1af26466
Author: Jeffrey Stedfast <fejj gnome org>
Date:   Fri Apr 14 08:28:27 2017 -0400

    Don't use g_snprintf in gmime-filter-enriched.c
    
    Apparently this causes errors when used with
    -Werror=format-nonliteral

 gmime/gmime-filter-enriched.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/gmime/gmime-filter-enriched.c b/gmime/gmime-filter-enriched.c
index 5a17a02..d146211 100644
--- a/gmime/gmime-filter-enriched.c
+++ b/gmime/gmime-filter-enriched.c
@@ -436,7 +436,7 @@ enriched_to_html (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
                                        goto backup;
                                }
                        } else {
-                               const char *html_tag = NULL;
+                               const char *fmt, *html_tag = NULL;
                                char *enriched_tag;
                                size_t len;
                                guint i;
@@ -454,7 +454,7 @@ enriched_to_html (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
                                }
                                
                                if (i < G_N_ELEMENTS (enriched_tags)) {
-                                       if (html_tag_needs_param (html_tag)) {
+                                       if ((fmt = strstr (html_tag, "%s")) != NULL) {
                                                const char *start;
                                                char *param;
                                                
@@ -499,7 +499,15 @@ enriched_to_html (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
                                                len += strlen (html_tag);
                                                
                                                if ((outptr + len) < outend) {
-                                                       outptr += g_snprintf (outptr, len, html_tag, param);
+                                                       size_t n = (size_t) (fmt - html_tag);
+                                                       
+                                                       memcpy (outptr, html_tag, n);
+                                                       outptr += n;
+                                                       fmt += 2;
+                                                       
+                                                       outptr = g_stpcpy (outptr, param);
+                                                       outptr = g_stpcpy (outptr, fmt);
+                                                       
                                                        g_free (param);
                                                } else {
                                                        g_free (param);


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