driver: Fix format specifiers and avoid fixed-size buffer.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 2 Jan 2019 22:30:56 +0000 (14:30 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 2 Jan 2019 22:50:14 +0000 (14:50 -0800)
The format specifier problem is real.  The fixed-size buffers should not
be, but it is not worth arguing with GCC.

Fixes: a1b7813a6993 ("output: New page-setup-item.")
src/output/driver.c

index 8b5a66249d6a4b54e902468dc7319249110bf008..fb5444ec14cb2dc76fa64fbef7dfd97f31c75e76 100644 (file)
@@ -239,9 +239,9 @@ output_submit (struct output_item *item)
       free (e->groups[idx]);
       if (idx >= 1 && idx <= 4)
         {
-          char key[6];
-          snprintf (key, sizeof key, "Head%d", idx);
+          char *key = xasprintf ("Head%zu", idx);
           string_map_find_and_delete (&e->heading_vars, key);
+          free (key);
         }
     }
   else if (is_text_item (item))
@@ -252,9 +252,9 @@ output_submit (struct output_item *item)
       if (type == TEXT_ITEM_TITLE
           && e->n_groups >= 1 && e->n_groups <= 4)
         {
-          char key[6];
-          snprintf (key, sizeof key, "Head%d", e->n_groups);
+          char *key = xasprintf ("Head%zu", e->n_groups);
           string_map_replace (&e->heading_vars, key, text);
+          free (key);
         }
       else if (type == TEXT_ITEM_PAGE_TITLE)
         string_map_replace (&e->heading_vars, "PageTitle", text);