From 3b5050a528827d2bc70718c1bf52721bcf352f70 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandresavard@alexandresavard-desktop.(none)>
Date: Fri, 16 Apr 2010 09:42:35 -0400
Subject: [PATCH] [#2926] Fix address display in gnome client

---
 sflphone-client-gnome/src/actions.c                    | 6 ++++--
 sflphone-client-gnome/src/actions.h                    | 2 +-
 sflphone-client-gnome/src/config/accountconfigdialog.c | 6 +++---
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c
index ff46eff05e..326434dd29 100644
--- a/sflphone-client-gnome/src/actions.c
+++ b/sflphone-client-gnome/src/actions.c
@@ -1418,7 +1418,7 @@ sflphone_call_state_changed( callable_obj_t * c, const gchar * description, cons
 }
 
 
-void sflphone_get_interface_addr_from_name(char *iface_name, char **iface_addr) {
+void sflphone_get_interface_addr_from_name(char *iface_name, char **iface_addr, int size) {
 
     struct ifreq ifr;
     int fd;
@@ -1446,7 +1446,9 @@ void sflphone_get_interface_addr_from_name(char *iface_name, char **iface_addr)
 
     tmp_addr = (char *)addr_in;
 
-    snprintf(*iface_addr, sizeof(*iface_addr), "%d.%d.%d.%d", 
+    snprintf(*iface_addr, size, "%d.%d.%d.%d", 
 	     UC(tmp_addr[0]), UC(tmp_addr[1]), UC(tmp_addr[2]), UC(tmp_addr[3]));
 
+    close(fd);
+
 }
diff --git a/sflphone-client-gnome/src/actions.h b/sflphone-client-gnome/src/actions.h
index 2d956ddb80..eb63c0eeb5 100644
--- a/sflphone-client-gnome/src/actions.h
+++ b/sflphone-client-gnome/src/actions.h
@@ -289,5 +289,5 @@ void sflphone_call_state_changed(callable_obj_t * c, const gchar * description,
 /**
  * Resolve an interface address given its name
  */
-void sflphone_get_interface_addr_from_name(char *iface_name, char **iface_addr);
+void sflphone_get_interface_addr_from_name(char *iface_name, char **iface_addr, int size);
 #endif
diff --git a/sflphone-client-gnome/src/config/accountconfigdialog.c b/sflphone-client-gnome/src/config/accountconfigdialog.c
index 1b2e5e8b43..07efb73cd3 100644
--- a/sflphone-client-gnome/src/config/accountconfigdialog.c
+++ b/sflphone-client-gnome/src/config/accountconfigdialog.c
@@ -641,7 +641,7 @@ static local_interface_changed_cb(GtkWidget * widget, gpointer data UNUSED) {
 
 		local_iface_name = (gchar *) gtk_combo_box_get_active_text (GTK_COMBO_BOX (localAddressCombo));
 		// sflphone_get_interface_addr_from_name((char *)local_interface);
-		sflphone_get_interface_addr_from_name(local_iface_name, &local_iface_addr);
+		sflphone_get_interface_addr_from_name(local_iface_name, &local_iface_addr, 36);
 
 		gtk_entry_set_text(GTK_ENTRY(localAddressEntry), local_iface_addr);
 		gtk_entry_set_text (GTK_ENTRY(publishedAddressEntry), local_iface_addr);
@@ -1007,7 +1007,7 @@ GtkWidget* create_network (account_t **a) {
     gchar *local_iface_addr;
     gchar *local_iface_name; 
 
-    local_iface_addr= g_malloc(18);
+    local_iface_addr= g_malloc(36);
     
     if (iface_list != NULL) {
 
@@ -1050,7 +1050,7 @@ GtkWidget* create_network (account_t **a) {
     // Fill the text entry with the ip address of local interface selected
     localAddressEntry = gtk_entry_new();
     local_iface_name = (gchar *) gtk_combo_box_get_active_text (GTK_COMBO_BOX (localAddressCombo));
-    sflphone_get_interface_addr_from_name(local_iface_name, &local_iface_addr);
+    sflphone_get_interface_addr_from_name(local_iface_name, &local_iface_addr, 36);
     gtk_entry_set_text(GTK_ENTRY(localAddressEntry), local_iface_addr);
     gtk_widget_set_sensitive(localAddressEntry, FALSE); 
     gtk_table_attach ( GTK_TABLE( table ), localAddressEntry, 2, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-- 
GitLab