diff options
author | Saurav Babu <saurav.babu@samsung.com> | 2018-05-18 11:24:45 +0530 |
---|---|---|
committer | Saurav Babu <saurav.babu@samsung.com> | 2018-05-18 11:24:45 +0530 |
commit | dee0b094d657dc9aa96d7f771fa2e0ee5de1942c (patch) | |
tree | 75fe6f132e103aa8997c0d2061f9161cfa498cf9 | |
parent | 6c73f51b34fa18a1a9b4582f0e1dfcaee8f2fa5e (diff) | |
download | connman-dee0b094d657dc9aa96d7f771fa2e0ee5de1942c.tar.gz connman-dee0b094d657dc9aa96d7f771fa2e0ee5de1942c.tar.bz2 connman-dee0b094d657dc9aa96d7f771fa2e0ee5de1942c.zip |
gsupplicant: Fixed crash issue when network exists in supplicantsubmit/tizen/20180518.061044accepted/tizen/unified/20180521.003506
In some cases interface->network_path exists but
interface->network_info.ssid is NULL which leads to crash with below
backtrace:
Program received signal SIGSEGV, Segmentation fault.
0xb6b0d184 in memcmp () from /lib/libc.so.6
(gdb) bt
#0 0xb6b0d184 in memcmp () from /lib/libc.so.6
#1 0xb6eb5530 in compare_network_parameters (ssid=0xb85aec20,
interface=0xb85a1710) at gsupplicant/supplicant.c:445
#2 g_supplicant_interface_connect (interface=0xb85a1710,
ssid=0xb85aec20, callback=0xb6eab039 <connect_callback>,
user_data=0xb859cbb0) at gsupplicant/supplicant.c:5839
#3 0xb6ecc000 in __connman_network_connect (network=0xb859cbb0) at
src/network.c:1711
#4 0xb6edaabe in service_connect (service=0xb85a6558) at
src/service.c:8143
#5 __connman_service_connect (service=service@entry=0xb85a6558,
reason=reason@entry=CONNMAN_SERVICE_CONNECT_REASON_USER) at
src/service.c:8203
#6 0xb6edc148 in connect_service (conn=<optimized out>, msg=0xb85d3b80,
user_data=0xb85a6558) at src/service.c:5570
#7 0xb6f1653e in process_message
(connection=connection@entry=0xb859b600,
message=message@entry=0xb85d3b80,
iface_user_data=iface_user_data@entry=0xb85a6558, method=<optimized
out>, method=<optimized out>) at gdbus/object.c:259
#8 0xb6f167be in generic_message (connection=0xb859b600,
message=0xb85d3b80, user_data=<optimized out>) at gdbus/object.c:1071
#9 0xb6d126b0 in ?? () from /lib/libdbus-1.so.3
#10 0xb6d014a8 in dbus_connection_dispatch () from /lib/libdbus-1.so.3
#11 0xb6f144f2 in message_dispatch (data=0xb859b600) at
gdbus/mainloop.c:76
#12 0xb6d898e8 in g_main_dispatch (context=0xb8599808) at gmain.c:3234
#13 g_main_context_dispatch (context=context@entry=0xb8599808) at
gmain.c:3887
#14 0xb6d89c78 in g_main_context_iterate (context=0xb8599808,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at
gmain.c:3960
#15 0xb6d89fd8 in g_main_loop_run (loop=0xb85999a8) at gmain.c:4156
#16 0xb6e9f352 in main (argc=<optimized out>, argv=<optimized out>) at
src/main.c:851
Change-Id: I9ed4c69d31389bd7aa0c8ab250d92c45cdab7507
Signed-off-by: Saurav Babu <saurav.babu@samsung.com>
-rw-r--r-- | gsupplicant/supplicant.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index c154a0ea..4a78cee2 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -437,6 +437,11 @@ static GSupplicantState string2state(const char *state) static bool compare_network_parameters(GSupplicantInterface *interface, GSupplicantSSID *ssid) { +#if defined TIZEN_EXT + if (!interface->network_info.ssid) + return FALSE; +#endif + if (memcmp(interface->network_info.ssid, ssid->ssid, ssid->ssid_len)) return FALSE; @@ -5905,6 +5910,15 @@ static void network_remove_result(const char *error, connect_data->ssid = data->ssid; connect_data->user_data = data->user_data; +#if defined TIZEN_EXT + int ret; + if (data->ssid->passphrase && g_strcmp0(data->ssid->passphrase, "") != 0 + && !data->ssid->eap) { + ret = send_decryption_request(data->ssid->passphrase, connect_data); + if (ret < 0) + SUPPLICANT_DBG("Decryption request failed %d", ret); + } else +#endif supplicant_dbus_method_call(data->interface->path, SUPPLICANT_INTERFACE ".Interface", "AddNetwork", interface_add_network_params, |