Package: ekiga
Version: 2.0.3-2
Severity: grave
Tags: patch, security, fixed-upstream
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1006 says:
"Multiple format string vulnerabilities in the
gm_main_window_flash_message function in Ekiga before 2.0.5 allow
attackers to cause a denial of service and possibly execute arbitrary
code via a crafted Q.931 SETUP packet."
See attached patch for upstream fix.
--
Kees Cook @outflux.net
Index: urlhandler.cpp
===================================================================
--- urlhandler.cpp (revision 4825)
+++ urlhandler.cpp (revision 4826)
@@ -532,13 +532,13 @@
if (call_address.Find ("+type=directory") != P_MAX_INDEX) {
- gm_main_window_flash_message (main_window, _("User not found"));
+ gm_main_window_flash_message (main_window, "%s", _("User not found"));
call_history_item->end_reason = g_strdup (_("User not found"));
endpoint->SetCallingState (GMManager::Standby);
}
else {
- gm_main_window_flash_message (main_window, _("Failed to call user"));
+ gm_main_window_flash_message (main_window, "%s", _("Failed to call user"));
call_history_item->end_reason = g_strdup (_("Failed to call user"));
}
Index: manager.cpp
===================================================================
--- manager.cpp (revision 4825)
+++ manager.cpp (revision 4826)
@@ -715,7 +715,7 @@
gnomemeeting_threads_enter ();
msg = g_strdup_printf (_("Forwarding call to %s"),
(const char*) forward_party);
- gm_main_window_flash_message (main_window, msg);
+ gm_main_window_flash_message (main_window, "%s", msg);
gm_history_window_insert (history_window, msg);
gnomemeeting_threads_leave ();
g_free (msg);
@@ -873,7 +873,7 @@
/* Update the log and status bar */
msg = g_strdup_printf (_("Call from %s"), (const char *) utf8_name);
gnomemeeting_threads_enter ();
- gm_main_window_flash_message (main_window, msg);
+ gm_main_window_flash_message (main_window, "%s", msg);
gm_chat_window_push_info_message (chat_window, NULL, msg);
gm_history_window_insert (history_window, msg);
gnomemeeting_threads_leave ();
@@ -913,7 +913,7 @@
/* Display the action message */
gnomemeeting_threads_enter ();
if (short_reason)
- gm_main_window_flash_message (main_window, short_reason);
+ gm_main_window_flash_message (main_window, "%s", short_reason);
if (long_reason)
gm_history_window_insert (history_window, long_reason);
gnomemeeting_threads_leave ();
@@ -1061,7 +1061,7 @@
msg = g_strdup_printf (_("Connected with %s"), utf8_name);
gm_main_window_set_status (main_window, utf8_name);
gm_main_window_set_panel_section (main_window, CALL);
- gm_main_window_flash_message (main_window, msg);
+ gm_main_window_flash_message (main_window, "%s", msg);
gm_chat_window_push_info_message (chat_window, NULL, msg);
gm_main_window_update_calling_state (main_window, GMManager::Connected);
gm_chat_window_update_calling_state (chat_window,
@@ -1351,7 +1351,7 @@
gm_calls_history_item_free (call_history_item);
gm_history_window_insert (history_window, msg_reason);
- gm_main_window_flash_message (main_window, msg_reason);
+ gm_main_window_flash_message (main_window, "%s", msg_reason);
gm_chat_window_push_info_message (chat_window, NULL, "");
gnomemeeting_threads_leave ();
Index: sip.cpp
===================================================================
--- sip.cpp (revision 4825)
+++ sip.cpp (revision 4826)
@@ -319,7 +319,7 @@
#endif
gm_history_window_insert (history_window, msg);
- gm_main_window_flash_message (main_window, msg);
+ gm_main_window_flash_message (main_window, "%s", msg);
if (endpoint.GetCallingState() == GMManager::Standby)
gm_main_window_set_account_info (main_window,
endpoint.GetRegisteredAccounts());