mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 14:17:20 +00:00
Merge pull request #5672 from qlyoung/fix-zebra-pbr-iptable-heap-uaf
zebra: fix iptable install heap UAF
This commit is contained in:
commit
c36fbd565e
@ -652,12 +652,22 @@ static void *pbr_iptable_alloc_intern(void *arg)
|
|||||||
{
|
{
|
||||||
struct zebra_pbr_iptable *zpi;
|
struct zebra_pbr_iptable *zpi;
|
||||||
struct zebra_pbr_iptable *new;
|
struct zebra_pbr_iptable *new;
|
||||||
|
struct listnode *ln;
|
||||||
|
char *ifname;
|
||||||
|
|
||||||
zpi = (struct zebra_pbr_iptable *)arg;
|
zpi = (struct zebra_pbr_iptable *)arg;
|
||||||
|
|
||||||
new = XCALLOC(MTYPE_TMP, sizeof(struct zebra_pbr_iptable));
|
new = XCALLOC(MTYPE_TMP, sizeof(struct zebra_pbr_iptable));
|
||||||
|
|
||||||
|
/* Deep structure copy */
|
||||||
memcpy(new, zpi, sizeof(*zpi));
|
memcpy(new, zpi, sizeof(*zpi));
|
||||||
|
new->interface_name_list = list_new();
|
||||||
|
|
||||||
|
if (zpi->interface_name_list) {
|
||||||
|
for (ALL_LIST_ELEMENTS_RO(zpi->interface_name_list, ln, ifname))
|
||||||
|
listnode_add(new->interface_name_list,
|
||||||
|
XSTRDUP(MTYPE_PBR_IPTABLE_IFNAME, ifname));
|
||||||
|
}
|
||||||
|
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user