mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
lib: guard against padding garbage in ZAPI read
When reading in a nexthop from ZAPI, only set the fields that actually have meaning. While it shouldn't happen to begin with, we can otherwise carry padding garbage into the unused leftover union bytes. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
b666ee510e
commit
4a0e1419a6
|
@ -2300,7 +2300,27 @@ struct nexthop *nexthop_from_zapi_nexthop(const struct zapi_nexthop *znh)
|
|||
n->type = znh->type;
|
||||
n->vrf_id = znh->vrf_id;
|
||||
n->ifindex = znh->ifindex;
|
||||
n->gate = znh->gate;
|
||||
|
||||
/* only copy values that have meaning - make sure "spare bytes" are
|
||||
* left zeroed for hashing (look at _nexthop_hash_bytes)
|
||||
*/
|
||||
switch (znh->type) {
|
||||
case NEXTHOP_TYPE_BLACKHOLE:
|
||||
n->bh_type = znh->bh_type;
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV4:
|
||||
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
||||
n->gate.ipv4 = znh->gate.ipv4;
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV6:
|
||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||
n->gate.ipv6 = znh->gate.ipv6;
|
||||
break;
|
||||
case NEXTHOP_TYPE_IFINDEX:
|
||||
/* nothing, ifindex is always copied */
|
||||
break;
|
||||
}
|
||||
|
||||
n->srte_color = znh->srte_color;
|
||||
n->weight = znh->weight;
|
||||
|
||||
|
|
Loading…
Reference in a new issue