telepathy-mission-control: Flag printf-ish functions with G_GNUC_PRINTF and fix resulting warnings

Simon McVittie smcv at kemper.freedesktop.org
Thu Sep 19 11:42:53 PDT 2013


Module: telepathy-mission-control
Branch: master
Commit: cc2af09f608511bf316e94e4462ff041406c455b
URL:    http://cgit.freedesktop.org/telepathy/telepathy-mission-control/commit/?id=cc2af09f608511bf316e94e4462ff041406c455b

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Wed Sep 18 14:07:57 2013 +0100

Flag printf-ish functions with G_GNUC_PRINTF and fix resulting warnings

In particular, mcd-account-manager-default could crash when migrating
an account, since it would dereference arbitrary stack contents
as a pointer-to-string.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=69542
Reviewed-by: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>

---

 src/mcd-account-manager-default.c |    3 ++-
 src/mcd-account.c                 |    2 +-
 src/mcd-connection.c              |    2 +-
 src/mcd-debug.h                   |    2 +-
 src/mcd-dispatcher.c              |    2 +-
 tests/account-store.c             |    4 ++--
 6 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/mcd-account-manager-default.c b/src/mcd-account-manager-default.c
index e73fca1..0a89fe1 100644
--- a/src/mcd-account-manager-default.c
+++ b/src/mcd-account-manager-default.c
@@ -343,7 +343,8 @@ _list (const McpAccountStorage *self,
 
           if (_commit (self, am, NULL))
             {
-              DEBUG ("Migrated %s to new location: deleting old copy");
+              DEBUG ("Migrated %s to new location: deleting old copy",
+                  old_filename);
               if (g_unlink (old_filename) != 0)
                 g_warning ("Unable to delete %s: %s", old_filename,
                     g_strerror (errno));
diff --git a/src/mcd-account.c b/src/mcd-account.c
index 77b6153..52bad97 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -2673,7 +2673,7 @@ apply_parameter_updates (McdAccount *account,
         g_hash_table_iter_init (&iter, dbus_properties);
         while (g_hash_table_iter_next (&iter, &name, &value))
         {
-            DEBUG ("updating parameter %s", name);
+            DEBUG ("updating parameter %s", (const gchar *) name);
             _mcd_connection_update_property (priv->connection, name, value);
         }
     }
diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index 1e5955a..1d71da4 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -705,7 +705,7 @@ connection_should_reconnect (TpConnection *tp_conn,
         {
         case TP_DBUS_ERROR_NAME_OWNER_LOST:
             /* CM crashed */
-            DEBUG ("dbus error code: OWNER_LOST, reconnecting", code);
+            DEBUG ("dbus error code: OWNER_LOST, reconnecting");
             return TRUE;
         }
     }
diff --git a/src/mcd-debug.h b/src/mcd-debug.h
index f91e69d..6cd9e08 100644
--- a/src/mcd-debug.h
+++ b/src/mcd-debug.h
@@ -70,7 +70,7 @@ static inline gint _mcd_debug_get_level (void)
 
 void mcd_debug_print_tree (gpointer obj);
 
-void mcd_debug (const gchar *format, ...);
+void mcd_debug (const gchar *format, ...) G_GNUC_PRINTF (1, 2);
 
 G_END_DECLS
 
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index caa7007..5fea7f2 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -2051,7 +2051,7 @@ try_delegating (ChannelToDelegate *to_delegate)
             g_strdup (mcd_channel_get_object_path (to_delegate->channel)),
             v);
 
-        DEBUG ("...but failed to delegate it: %s",
+        DEBUG ("...but failed to delegate %s: %s",
             mcd_channel_get_object_path (to_delegate->channel),
             to_delegate->error->message);
 
diff --git a/tests/account-store.c b/tests/account-store.c
index 75860d8..4482ea5 100644
--- a/tests/account-store.c
+++ b/tests/account-store.c
@@ -83,7 +83,7 @@ const Backend backends[] = {
 };
 
 static void usage (const gchar *name, const gchar *fmt,
-    ...) G_GNUC_NORETURN;
+    ...) G_GNUC_NORETURN G_GNUC_PRINTF (2, 3);
 
 int main (int argc, char **argv)
 {
@@ -102,7 +102,7 @@ int main (int argc, char **argv)
   g_set_application_name (argv[0]);
 
   if (argc < 3)
-    usage (argv[0], "");
+    usage (argv[0], "Not enough arguments");
 
   op_name = argv[1];
   backend = argv[2];



More information about the telepathy-commits mailing list