-
Notifications
You must be signed in to change notification settings - Fork 1.4k
bgpd: Fixed crash upon bgp network import-check command #18387
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bgpd: Fixed crash upon bgp network import-check command #18387
Conversation
a7196eb to
74acf17
Compare
|
In what case is this happening? |
|
we are seeing this issue (inconsistently) on executing “no bgp network import-check” command. BGP is redistributing both IPv4 and IPv6 networks |
BT:
```
3 <signal handler called>
4 0x00005616837546fc in bgp_static_update (bgp=bgp@entry=0x5616865eac50, p=0x561686639e40,
bgp_static=0x561686639f50, afi=afi@entry=AFI_IP6, safi=safi@entry=SAFI_UNICAST) at ../bgpd/bgp_route.c:7232
5 0x0000561683754ad0 in bgp_static_add (bgp=0x5616865eac50) at ../bgpd/bgp_table.h:413
6 0x0000561683785e2e in no_bgp_network_import_check (self=<optimized out>, vty=0x5616865e04c0,
argc=<optimized out>, argv=<optimized out>) at ../bgpd/bgp_vty.c:4609
7 0x00007fdbcc294820 in cmd_execute_command_real (vline=vline@entry=0x561686663000,
```
The program encountered a SEG FAULT when attempting to access pi->extra->vrfleak->bgp_orig because
pi->extra->vrfleak was NULL.
```
(gdb) p pi->extra->vrfleak
$1 = (struct bgp_path_info_extra_vrfleak *) 0x0
(gdb) p pi->extra->vrfleak->bgp_orig
Cannot access memory at address 0x8
```
Added NOT NULL check on pi->extra->vrfleak before accessing pi->extra->vrfleak->bgp_orig
to prevent the segmentation fault.
Signed-off-by: Manpreet Kaur <[email protected]>
74acf17 to
bc1008b
Compare
|
Commit looks OK. Have you checked all the bgp_orig pointer accesses to make sure that the issue is not present somewhere else ? |
|
And that nothing is accessed in vrfleak pointer without checking its validity ? |
|
I checked and found no issues. The bgp_orig is accessed only after confirming that vrfleak is not null at other places. |
And about other stuff like vrfleak->parent ? |
Found no issue in accessing any of the member of vrfleak |
louis-6wind
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
@Mergifyio backport stable/10.3 stable/10.2 stable/10.1 stable/10.0 |
✅ Backports have been createdDetails
|
bgpd: Fixed crash upon bgp network import-check command (backport #18387)
bgpd: Fixed crash upon bgp network import-check command (backport #18387)
bgpd: Fixed crash upon bgp network import-check command (backport #18387)
bgpd: Fixed crash upon bgp network import-check command (backport #18387)
BT:
The program encountered a SEG FAULT when attempting to access pi->extra->vrfleak->bgp_orig because pi->extra->vrfleak was NULL.
Added NOT NULL check on pi->extra->vrfleak before accessing pi->extra->vrfleak->bgp_orig to prevent the segmentation fault.