diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-18 13:07:57 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-11-18 13:12:39 +0000 |
commit | 455929e7d6214250399ad5157ca33bd4e4ee38a0 (patch) | |
tree | a8c1c1c4ca13c715439cc80db901bd76d4aa5c94 | |
parent | 712ddaf9b57fdc03e0c6b0b2c45ec04eaf135248 (diff) |
Flag printf-ish functions with G_GNUC_PRINTF and fix resulting warningstelepathy-mission-control-5.14
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@collabora.co.uk>
[backported to 5.14 for Ubuntu]
Tested-by: Sebastien Bacher <seb128@ubuntu.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=71539
-rw-r--r-- | src/mcd-account-manager-default.c | 3 | ||||
-rw-r--r-- | src/mcd-account.c | 2 | ||||
-rw-r--r-- | src/mcd-debug.h | 2 | ||||
-rw-r--r-- | src/mcd-dispatcher.c | 2 | ||||
-rw-r--r-- | tests/account-store.c | 4 |
5 files changed, 7 insertions, 6 deletions
diff --git a/src/mcd-account-manager-default.c b/src/mcd-account-manager-default.c index ef39ba16..a9776920 100644 --- a/src/mcd-account-manager-default.c +++ b/src/mcd-account-manager-default.c @@ -777,7 +777,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 256575b1..6c7b4144 100644 --- a/src/mcd-account.c +++ b/src/mcd-account.c @@ -2422,7 +2422,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-debug.h b/src/mcd-debug.h index 66fdafcc..53da2d01 100644 --- a/src/mcd-debug.h +++ b/src/mcd-debug.h @@ -59,7 +59,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 48ebc833..45f06023 100644 --- a/src/mcd-dispatcher.c +++ b/src/mcd-dispatcher.c @@ -2034,7 +2034,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 7e609a1c..cb2900b8 100644 --- a/tests/account-store.c +++ b/tests/account-store.c @@ -87,7 +87,7 @@ const Backend backends[] = { }; static void usage (const gchar *name, const gchar *fmt, - ...) G_GNUC_NORETURN; + ...) G_GNUC_NORETURN G_GNUC_PRINTF (2, 3); #if ENABLE_GNOME_KEYRING #include <gnome-keyring.h> @@ -141,7 +141,7 @@ int main (int argc, char **argv) #endif if (argc < 3) - usage (argv[0], ""); + usage (argv[0], "Not enough arguments"); op_name = argv[1]; backend = argv[2]; |