Skip to content

Commit f4ac971

Browse files
committed
isisd: fix crash when configuring srv6 locator without isis instance
After the ISIS daemon is launched, the configuration of an srv6 locator in zebra triggers a crash: > sonic-net#4 0x00007f1f0ea980f3 in core_handler (signo=11, siginfo=0x7ffdb750de70, context=0x7ffdb750dd40) > at /build/make-pkg/output/_packages/cp-routing/src/lib/sigevent.c:262 > sonic-net#5 <signal handler called> > sonic-net#6 0x00005651a05783ef in isis_zebra_process_srv6_locator_add (cmd=117, zclient=0x5651a21d9bd0, length=25, vrf_id=0) > at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_zebra.c:1258 > sonic-net#7 0x00007f1f0ead5ac9 in zclient_read (thread=0x7ffdb750e750) at /build/make-pkg/output/_packages/cp-routing/src/lib/zclient.c:4246 > sonic-net#8 0x00007f1f0eab19d4 in thread_call (thread=0x7ffdb750e750) at /build/make-pkg/output/_packages/cp-routing/src/lib/thread.c:1825 > sonic-net#9 0x00007f1f0ea4862e in frr_run (master=0x5651a1f65a40) at /build/make-pkg/output/_packages/cp-routing/src/lib/libfrr.c:1155 > sonic-net#10 0x00005651a051131a in main (argc=5, argv=0x7ffdb750e998, envp=0x7ffdb750e9c8) > at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_main.c:282 > (gdb) f 6 > sonic-net#6 0x00005651a05783ef in isis_zebra_process_srv6_locator_add (cmd=117, zclient=0x5651a21d9bd0, length=25, vrf_id=0) > at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_zebra.c:1258 > (gdb) print isis > $1 = (struct isis *) 0x0 > (gdb) print isis->area_list > Cannot access memory at address 0x28 The isis pointer is NULL, because no instances have already been configured on the ISIS instance. Fix this by checking that there is any isis instance available when zebra hooks related to srv6 are received. Signed-off-by: Philippe Guibert <[email protected]>
1 parent fe1da43 commit f4ac971

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

isisd/isis_zebra.c

+6
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,9 @@ static int isis_zebra_process_srv6_locator_add(ZAPI_CALLBACK_ARGS)
12251225
struct listnode *node;
12261226
struct isis_area *area;
12271227

1228+
if (!isis)
1229+
return -1;
1230+
12281231
/* Decode the SRv6 locator */
12291232
if (zapi_srv6_locator_decode(zclient->ibuf, &loc) < 0)
12301233
return -1;
@@ -1274,6 +1277,9 @@ static int isis_zebra_process_srv6_locator_delete(ZAPI_CALLBACK_ARGS)
12741277
struct isis_srv6_sid *sid;
12751278
struct srv6_adjacency *sra;
12761279

1280+
if (!isis)
1281+
return -1;
1282+
12771283
/* Decode the received zebra message */
12781284
if (zapi_srv6_locator_decode(zclient->ibuf, &loc) < 0)
12791285
return -1;

0 commit comments

Comments
 (0)