Fix NULL pointer dereference 03/256003/2
authorNishant Chaprana <n.chaprana@samsung.com>
Fri, 26 Mar 2021 08:38:15 +0000 (14:08 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Wed, 31 Mar 2021 08:34:43 +0000 (14:04 +0530)
Core was generated by `/usr/bin/connmand -n --nobacktrace --noplugin vpn'.
Program terminated with signal SIGSEGV, Segmentation fault.
>0  connman_device_get_last_connected_ident (device=0x0) at src/device.c:842
842 return device->last_connected_ident;
(gdb) bt
>0  connman_device_get_last_connected_ident (device=0x0) at src/device.c:842
>1  0x0098ec70 in calculate_score_last_connected (service=0x1ef9eb8) at src/service.c:7900
>2  calculate_score (service=0x1ef9eb8) at src/service.c:7994
>3  calculate_score (service=0x1ef9eb8) at src/service.c:7977
>4  0x0098eed8 in service_compare (a=0x1ef9eb8, b=0x1f010a0) at src/service.c:8138

Change-Id: I7e412f68f71472e28669941b9346ba73281ccd39
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
src/service.c

index 55bb5f6..c918b64 100755 (executable)
@@ -7897,6 +7897,9 @@ static int calculate_score_last_connected(struct connman_service *service)
        unsigned int frequency;
 
        device = connman_network_get_device(service->network);
+       if (!device)
+               return 0;
+
        last_connected_ident = connman_device_get_last_connected_ident(device);
        frequency = connman_network_get_frequency(service->network);