Fix GLib-CRITICAL using NULL check before g_strlcpy()
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 7 Oct 2019 11:43:44 +0000 (17:13 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Tue, 8 Oct 2019 00:54:53 +0000 (09:54 +0900)
This patch removes below glib's critical warning:-
    GLib-CRITICAL **: g_strlcpy: assertion 'src != NULL' failed

Below is the backtrace when glib warning is generated:-
    (gdb) bt full
    #0  0xb6176f14 in g_log () from /usr/lib/libglib-2.0.so.0
    No symbol table info available.
    #1  0xb61774f8 in g_return_if_fail_warning () from /usr/lib/libglib-2.0.so.0
    No symbol table info available.
    #2  0xb6191320 in g_strlcpy () from /usr/lib/libglib-2.0.so.0
    No symbol table info available.
    #3  0xb610ec90 in ua_user_add_device (
     user_handle=user_handle@entry=0xb0c8ec50,
     device_handle=device_handle@entry=0xb0e00a90,
     callback=0x4064a1 <_ua_user_device_added_cb>,
     user_data=user_data@entry=0x0)
     at /usr/src/debug/capi-network-ua-0.11.2/src/user-awareness-users.c:835
     __func__ = "ua_user_add_device"
     ret = <optimized out>
     handle = 0x0
     temp_handle = 0x0
     device = 0xb0e00a90
     user = <optimized out>
     uam_device = {operating_system = UAM_OS_TYPE_TIZEN,
       type = UAM_TECH_TYPE_WIFI, mac = "ab:cd:ef:gh:ij:kl",
       ipv4_addr = '\000' <repeats 49 times>,
       device_id = '\000' <repeats 49 times>, payload = {
     service_id = 0 '\000', device_icon = 0 '\000', purpose = 0 '\000',
     duid = '\000' <repeats 17 times>,
     bt_mac = '\000' <repeats 17 times>}, discriminant = 1,
       last_seen = 0}

Change-Id: I25b7f26b18c6ff8bfff3522c653d66128f1eafd7
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
src/user-awareness-users.c

index 2194add8f1e9fb45e6c23695fb04fd5a826e21e9..53d08a3010a6831caadf0df2edc6c3a94fe38b9b 100644 (file)
@@ -832,7 +832,8 @@ int ua_user_add_device(ua_user_h user_handle, ua_device_h device_handle,
        if (device->mac)
                g_strlcpy(uam_device.mac, device->mac, UAM_MAC_ADDRESS_STRING_LEN);
 
-       g_strlcpy(uam_device.device_id, device->device_id, UA_MOBILE_ID_STRING_LEN);
+       if (device->device_id)
+               g_strlcpy(uam_device.device_id, device->device_id, UA_MOBILE_ID_STRING_LEN);
 
        if (device->ipv4)
                g_strlcpy(uam_device.ipv4_addr, device->ipv4, UA_IPV4_ADDRESS_STRING_LEN);