From: Yu Watanabe Date: Wed, 16 Mar 2022 12:12:37 +0000 (+0900) Subject: sd-radv: voidify sd_radv_remove_prefix() X-Git-Tag: v251-rc1~132^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95931532aa0f9f951454a45e078a49dca4341dfc;p=thirdparty%2Fsystemd.git sd-radv: voidify sd_radv_remove_prefix() If the prefix is only referenced by sd_radv, then the returned pointer is already freed. networkd does not uses the returned value. Let's voidify the function. --- diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c index e332f6a2ab9..752c09d8907 100644 --- a/src/libsystemd-network/sd-radv.c +++ b/src/libsystemd-network/sd-radv.c @@ -659,15 +659,20 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) { return 0; } -sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra, - const struct in6_addr *prefix, - unsigned char prefixlen) { - sd_radv_prefix *cur, *next; +void sd_radv_remove_prefix( + sd_radv *ra, + const struct in6_addr *prefix, + unsigned char prefixlen) { - assert_return(ra, NULL); - assert_return(prefix, NULL); + sd_radv_prefix *cur; + + if (!ra) + return; - LIST_FOREACH_SAFE(prefix, cur, next, ra->prefixes) { + if (!prefix) + return; + + LIST_FOREACH(prefix, cur, ra->prefixes) { if (prefixlen != cur->opt.prefixlen) continue; @@ -677,11 +682,8 @@ sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra, LIST_REMOVE(prefix, ra->prefixes, cur); ra->n_prefixes--; sd_radv_prefix_unref(cur); - - break; + return; } - - return cur; } int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) { diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c index edc893e9f69..775acb3f95a 100644 --- a/src/network/networkd-dhcp-prefix-delegation.c +++ b/src/network/networkd-dhcp-prefix-delegation.c @@ -187,7 +187,7 @@ int dhcp_pd_remove(Link *link, bool only_marked) { continue; if (link->radv) - (void) sd_radv_remove_prefix(link->radv, &route->dst.in6, 64); + sd_radv_remove_prefix(link->radv, &route->dst.in6, 64); link_remove_dhcp_pd_subnet_prefix(link, &route->dst.in6); @@ -212,7 +212,7 @@ int dhcp_pd_remove(Link *link, bool only_marked) { in6_addr_mask(&prefix, 64); if (link->radv) - (void) sd_radv_remove_prefix(link->radv, &prefix, 64); + sd_radv_remove_prefix(link->radv, &prefix, 64); link_remove_dhcp_pd_subnet_prefix(link, &prefix); diff --git a/src/systemd/sd-radv.h b/src/systemd/sd-radv.h index e604df13718..6eeb92c48b1 100644 --- a/src/systemd/sd-radv.h +++ b/src/systemd/sd-radv.h @@ -59,8 +59,7 @@ int sd_radv_set_other_information(sd_radv *ra, int other); int sd_radv_set_preference(sd_radv *ra, unsigned preference); int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p); int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p); -sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra, const struct in6_addr *prefix, - unsigned char prefixlen); +void sd_radv_remove_prefix(sd_radv *ra, const struct in6_addr *prefix, unsigned char prefixlen); int sd_radv_set_rdnss(sd_radv *ra, uint32_t lifetime, const struct in6_addr *dns, size_t n_dns); int sd_radv_set_dnssl(sd_radv *ra, uint32_t lifetime, char **search_list);