mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 00:25:01 +00:00
Merge pull request #10546 from ton31337/fix/check_for_null_inside_unintern
bgpd: Check for NULL inside aspath_unintern()
This commit is contained in:
commit
8f689a6e8d
@ -328,7 +328,12 @@ void aspath_free(struct aspath *aspath)
|
||||
void aspath_unintern(struct aspath **aspath)
|
||||
{
|
||||
struct aspath *ret;
|
||||
struct aspath *asp = *aspath;
|
||||
struct aspath *asp;
|
||||
|
||||
if (!*aspath)
|
||||
return;
|
||||
|
||||
asp = *aspath;
|
||||
|
||||
if (asp->refcnt)
|
||||
asp->refcnt--;
|
||||
|
@ -1086,8 +1086,7 @@ void bgp_attr_unintern_sub(struct attr *attr)
|
||||
struct lcommunity *lcomm = NULL;
|
||||
|
||||
/* aspath refcount shoud be decrement. */
|
||||
if (attr->aspath)
|
||||
aspath_unintern(&attr->aspath);
|
||||
aspath_unintern(&attr->aspath);
|
||||
UNSET_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_AS_PATH));
|
||||
|
||||
if (attr->community)
|
||||
@ -3494,14 +3493,12 @@ done:
|
||||
* we can chuck as4_aggregator and as4_path alltogether in order
|
||||
* to save memory
|
||||
*/
|
||||
if (as4_path) {
|
||||
/*
|
||||
* unintern - it is in the hash
|
||||
* The flag that we got this is still there, but that
|
||||
* does not do any trouble
|
||||
*/
|
||||
aspath_unintern(&as4_path);
|
||||
}
|
||||
/*
|
||||
* unintern - it is in the hash
|
||||
* The flag that we got this is still there, but that
|
||||
* does not do any trouble
|
||||
*/
|
||||
aspath_unintern(&as4_path);
|
||||
|
||||
transit = bgp_attr_get_transit(attr);
|
||||
if (ret != BGP_ATTR_PARSE_ERROR) {
|
||||
|
@ -1062,8 +1062,7 @@ static void parse_test(struct test_segment *t)
|
||||
|
||||
printf("\n");
|
||||
|
||||
if (asp)
|
||||
aspath_unintern(&asp);
|
||||
aspath_unintern(&asp);
|
||||
}
|
||||
|
||||
/* prepend testing */
|
||||
@ -1117,8 +1116,7 @@ static void empty_prepend_test(struct test_segment *t)
|
||||
printf(FAILED "!\n");
|
||||
|
||||
printf("\n");
|
||||
if (asp1)
|
||||
aspath_unintern(&asp1);
|
||||
aspath_unintern(&asp1);
|
||||
aspath_free(asp2);
|
||||
}
|
||||
|
||||
@ -1277,10 +1275,8 @@ static int handle_attr_test(struct aspath_tests *t)
|
||||
}
|
||||
|
||||
out:
|
||||
if (attr.aspath)
|
||||
aspath_unintern(&attr.aspath);
|
||||
if (asp)
|
||||
aspath_unintern(&asp);
|
||||
aspath_unintern(&attr.aspath);
|
||||
aspath_unintern(&asp);
|
||||
return failed - initfail;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user