From 6f639b25554658d8f1021ab6ea8724f8078ccc28 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 13 Oct 2024 15:08:04 +0900 Subject: [PATCH] network/address: do not set family in config_parse_broadcast() The family will be checked later in address_section_verify() -> address_section_adjust_broadcast(), hence it is not necessary to set here. Follow-up for 5d15c7b19cae6d3332d4e213c380e0fcc1317a2c. Fixes oss-fuzz#372994449. Fixes #34748. --- src/network/networkd-address.c | 9 +++++---- test/fuzz/fuzz-network-parser/oss-fuzz-372994449 | Bin 0 -> 4740 bytes 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 test/fuzz/fuzz-network-parser/oss-fuzz-372994449 diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index deffa4deade..228cb93fc82 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -2033,9 +2033,12 @@ static int config_parse_broadcast( union in_addr_union u; int r; + /* Do not check or set address->family here. It will be checked later in + * address_section_verify() -> address_section_adjust_broadcast() . */ + if (isempty(rvalue)) { /* The broadcast address will be calculated based on Address=, and set if the link is - * not a wireguard interface. Here, we do not check or set address->family. */ + * not a wireguard interface. */ address->broadcast = (struct in_addr) {}; address->set_broadcast = -1; return 1; @@ -2043,8 +2046,7 @@ static int config_parse_broadcast( r = parse_boolean(rvalue); if (r >= 0) { - /* The broadcast address will be calculated based on Address=. Here, we do not check or - * set address->family. */ + /* The broadcast address will be calculated based on Address=. */ address->broadcast = (struct in_addr) {}; address->set_broadcast = r; return 1; @@ -2061,7 +2063,6 @@ static int config_parse_broadcast( address->broadcast = u.in; address->set_broadcast = true; - address->family = AF_INET; return 1; } diff --git a/test/fuzz/fuzz-network-parser/oss-fuzz-372994449 b/test/fuzz/fuzz-network-parser/oss-fuzz-372994449 new file mode 100644 index 0000000000000000000000000000000000000000..76c3a4903cb7ea82271ce46b32391c4236a22cb6 GIT binary patch literal 4740 zc-rk(y-ve05H_nP23~-H0U^1uou;KyhC)Dqpo$7x)WIZ{s3^1~E)okb#=s--3OH&0 zD4|Ky5DKClDkpcJ@BDpt=K^5$tqUgXn*oe|d+d(u16vHo_xf=1s6ngiI4<|R0W{&M zdwX;@oquXVE_kP-Kw~-?4Q(cP_|lNizd~|M7%p|`s^<8DC_GaKX_yoQh6WR~3A_C!oJ7$i}JfSNH%P)b-c?^V+iU^e`w4nh2Bp7}0F}FU0k`~fh z5>!KK7HAs>sNPe6+s23no5ya=v{lMRra;t&9~7{TqYcs6<+ctDK4MR2#);tWWwIWM z+_iP!noQjE$5X*)2YC(NUS6GUeAb>0fc}%WW96{8jFM#IEs( ztzqi@;{PM-Gxfe@Xw?+*67sqVHxI2gz-BZAe~4~SDc`$w^6fX3@|?>#UJ>VA2NdcM PbDaC({Fys>aw&KRDYYHG literal 0 Hc-jL100001 -- 2.47.3