Patchwork connman-gnome: fixed DHCP segfault

login
register
mail settings
Submitter Emilia Ciobanu
Date May 17, 2013, 10:32 a.m.
Message ID <1368786726-32071-1-git-send-email-emilia.maria.silvia.ciobanu@intel.com>
Download mbox | patch
Permalink /patch/50039/
State New
Headers show

Comments

Saul Wold - May 17, 2013, 10:30 a.m.
On 05/17/2013 01:32 PM, Emilia Ciobanu wrote:
> In networks that don't have a DHCP server configured, ipv4 address
> allocation fails and the ipv4 structure doesn't get populated.
> The patch checks this case also.
>
> [YOCTO #3945]
>
> Signed-off-by: Emilia Ciobanu <emilia.maria.silvia.ciobanu@intel.com>
> ---
>   .../connman-gnome/null_check_for_ipv4_config.patch |   26 ++++++++++++++++++++
>   .../connman/connman-gnome_0.7.bb                   |    1 +
>   2 files changed, 27 insertions(+)
>   create mode 100644 meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch
>
> diff --git a/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch b/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch
> new file mode 100644
> index 0000000..456a4ba
> --- /dev/null
> +++ b/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch

You need to have Signed-off-by and Upstream-Status in your patch files also.

And any Comments that might make it more clear.

Sau!


> @@ -0,0 +1,26 @@
> +Index: git/properties/ethernet.c
> +===================================================================
> +--- git.orig/properties/ethernet.c
> ++++ git/properties/ethernet.c
> +@@ -194,7 +194,7 @@ void add_ethernet_service(GtkWidget *mai
> +
> + 	data->button = button;
> +
> +-	if (g_str_equal(ipv4_config.method, "dhcp") == TRUE)
> ++	if (!ipv4_config.method || g_str_equal(ipv4_config.method, "dhcp") == TRUE)
> + 		update_ethernet_ipv4(data, CONNMAN_POLICY_DHCP);
> + 	else
> + 		update_ethernet_ipv4(data, CONNMAN_POLICY_MANUAL);
> +Index: git/properties/wifi.c
> +===================================================================
> +--- git.orig/properties/wifi.c
> ++++ git/properties/wifi.c
> +@@ -230,7 +230,7 @@ static void wifi_ipconfig(GtkWidget *tab
> +
> + 	data->ipv4_config = ipv4_config;
> +
> +-	if (g_str_equal(ipv4_config.method, "dhcp") == TRUE)
> ++	if (!ipv4_config.method || g_str_equal(ipv4_config.method, "dhcp") == TRUE)
> + 		update_wifi_ipv4(data, CONNMAN_POLICY_DHCP);
> + 	else
> + 		update_wifi_ipv4(data, CONNMAN_POLICY_MANUAL);
> diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
> index 6299e70..4f8875c 100644
> --- a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
> +++ b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
> @@ -12,6 +12,7 @@ DEPENDS = "gtk+ dbus-glib intltool-native"
>   SRCREV = "cf3c325b23dae843c5499a113591cfbc98acb143"
>   SRC_URI = "git://github.com/connectivity/connman-gnome.git;protocol=git \
>   	   file://0001-Removed-icon-from-connman-gnome-about-applet.patch \
> +	   file://null_check_for_ipv4_config.patch \
>   	   file://images/* \
>             "
>
>
Emilia Ciobanu - May 17, 2013, 10:32 a.m.
In networks that don't have a DHCP server configured, ipv4 address
allocation fails and the ipv4 structure doesn't get populated.
The patch checks this case also.

[YOCTO #3945]

Signed-off-by: Emilia Ciobanu <emilia.maria.silvia.ciobanu@intel.com>
---
 .../connman-gnome/null_check_for_ipv4_config.patch |   26 ++++++++++++++++++++
 .../connman/connman-gnome_0.7.bb                   |    1 +
 2 files changed, 27 insertions(+)
 create mode 100644 meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch
Ross Burton - May 17, 2013, 10:52 a.m.
On 17 May 2013 11:32, Emilia Ciobanu
<emilia.maria.silvia.ciobanu@intel.com> wrote:
> +-      if (g_str_equal(ipv4_config.method, "dhcp") == TRUE)
> ++      if (!ipv4_config.method || g_str_equal(ipv4_config.method, "dhcp") == TRUE)

Is this really the right behaviour if IPv4.Method isn't set?

Ross
Emilia Ciobanu - May 17, 2013, 11:37 a.m.
Hi,

When using manual ip the ipv4_config structure has all fields populated and this condition
is skipped. The only case when the data structure fields are NULL is when we have
DHCP settings and for different reasons network configurations are not done. In this
case, connman automatically renews the ipv4 configurations in less than a minute.
Ethernet manual configuration behavior remains unchanged after this fix.

Thanks,
Ema

Patch

diff --git a/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch b/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch
new file mode 100644
index 0000000..456a4ba
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman-gnome/null_check_for_ipv4_config.patch
@@ -0,0 +1,26 @@ 
+Index: git/properties/ethernet.c
+===================================================================
+--- git.orig/properties/ethernet.c
++++ git/properties/ethernet.c
+@@ -194,7 +194,7 @@ void add_ethernet_service(GtkWidget *mai
+ 
+ 	data->button = button;
+ 
+-	if (g_str_equal(ipv4_config.method, "dhcp") == TRUE)
++	if (!ipv4_config.method || g_str_equal(ipv4_config.method, "dhcp") == TRUE)
+ 		update_ethernet_ipv4(data, CONNMAN_POLICY_DHCP);
+ 	else
+ 		update_ethernet_ipv4(data, CONNMAN_POLICY_MANUAL);
+Index: git/properties/wifi.c
+===================================================================
+--- git.orig/properties/wifi.c
++++ git/properties/wifi.c
+@@ -230,7 +230,7 @@ static void wifi_ipconfig(GtkWidget *tab
+ 
+ 	data->ipv4_config = ipv4_config;
+ 
+-	if (g_str_equal(ipv4_config.method, "dhcp") == TRUE)
++	if (!ipv4_config.method || g_str_equal(ipv4_config.method, "dhcp") == TRUE)
+ 		update_wifi_ipv4(data, CONNMAN_POLICY_DHCP);
+ 	else
+ 		update_wifi_ipv4(data, CONNMAN_POLICY_MANUAL);
diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
index 6299e70..4f8875c 100644
--- a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
+++ b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
@@ -12,6 +12,7 @@  DEPENDS = "gtk+ dbus-glib intltool-native"
 SRCREV = "cf3c325b23dae843c5499a113591cfbc98acb143"
 SRC_URI = "git://github.com/connectivity/connman-gnome.git;protocol=git \
 	   file://0001-Removed-icon-from-connman-gnome-about-applet.patch \
+	   file://null_check_for_ipv4_config.patch \
 	   file://images/* \
           "