]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
wireguard-tools: fix handling of multi-value config options
authorFelix Fietkau <nbd@nbd.name>
Fri, 20 Feb 2026 08:50:44 +0000 (08:50 +0000)
committerFelix Fietkau <nbd@nbd.name>
Fri, 20 Feb 2026 08:54:41 +0000 (08:54 +0000)
Config options like addresses and ip6prefix can be passed as either a
space-separated string or an array. Add a to_array() helper and use it
consistently for all multi-value options (addresses, ip6prefix,
allowed_ips).

Fixes: https://github.com/openwrt/openwrt/issues/22102
Fixes: 41bc454602f1 ("wireguard-tools: rewrite proto handler in ucode")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/network/utils/wireguard-tools/files/wireguard.uc

index 4d520776c84c7f77f635a689d1d19104787cee62..c74512909f931bfade6a2b6a43dabee2f1d87669 100644 (file)
@@ -30,6 +30,10 @@ function ensure_key_is_generated(cursor, section_name) {
        return private_key;
 }
 
+function to_array(val) {
+       return type(val) == 'array' ? val : split(val, /\s+/);
+}
+
 function parse_address(addr) {
        if (index(addr, ':') >= 0) {
                if (index(addr, '/') >= 0) {
@@ -125,7 +129,7 @@ function proto_setup(proto) {
                }
 
                if (peer.allowed_ips) {
-                       let allowed_list = type(peer.allowed_ips) == 'array' ? peer.allowed_ips : split(peer.allowed_ips, ' ');
+                       let allowed_list = to_array(peer.allowed_ips);
                        wg_config += sprintf('AllowedIPs=%s\n', join(', ', allowed_list));
 
                        if (peer.route_allowed_ips) {
@@ -166,7 +170,7 @@ function proto_setup(proto) {
        let ipv6_addrs = [];
 
        if (config.addresses) {
-               let addr_list = split(config.addresses, ' ');
+               let addr_list = to_array(config.addresses);
                for (let address in addr_list) {
                        let addr_info = parse_address(address);
                        let addr = { ipaddr: addr_info.address, mask: '' + addr_info.mask };
@@ -194,7 +198,7 @@ function proto_setup(proto) {
                link_data.routes6 = ipv6_routes;
 
        if (config.ip6prefix) {
-               let prefix_list = split(config.ip6prefix, ' ');
+               let prefix_list = to_array(config.ip6prefix);
                if (length(prefix_list) > 0)
                        link_data.ip6prefix = prefix_list;
        }