luci-mod-network: repair DHCP relay validation logic
authorPaul Donald <newtwen@gmail.com>
Wed, 24 Jan 2024 23:42:38 +0000 (00:42 +0100)
committerPaul Donald <newtwen@gmail.com>
Thu, 25 Jan 2024 00:14:41 +0000 (01:14 +0100)
change && to || so as not to backtrace if only one was empty/null.

Signed-off-by: Paul Donald <newtwen@gmail.com>
(cherry picked from commit 754b36d05ac26e1ddc68d8726e01faa38f9fe948)

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

index c78738b9cca31ead43a2da0240cc3f6bc3c14a9d..2c141d307850d7843c2a94ac4f87e626d9319439 100644 (file)
@@ -484,23 +484,27 @@ return view.extend({
                        var m = this.section.formvalue(section, 'local_addr'),
                            n = this.section.formvalue(section, 'server_addr'),
                            p;
-                       if (n != null && n != '')
-                           p = n.split('#');
+
+                       if (!m || !n) {
+                               return _('Both "Relay from" and "Relay to address" must be specified.');
+                       }
+                       else {
+                               p = n.split('#');
                                if (p.length > 1 && !/^[0-9]+$/.test(p[1]))
                                        return _('Expected port number.');
                                else
                                        n = p[0];
 
-                       if ((m == null || m == '') && (n == null || n == ''))
-                               return _('Both "Relay from" and "Relay to address" must be specified.');
-
-                       if ((validation.parseIPv6(m) && validation.parseIPv6(n)) ||
-                               validation.parseIPv4(m) && validation.parseIPv4(n))
-                               return true;
-                       else
-                               return _('Address families of "Relay from" and "Relay to address" must match.')
+                               if ((validation.parseIPv6(m) && validation.parseIPv6(n)) ||
+                                       validation.parseIPv4(m) && validation.parseIPv4(n))
+                                       return true;
+                               else
+                                       return _('Address families of "Relay from" and "Relay to address" must match.')
+                       }
+                       return true;
                };
 
+
                so = ss.option(widgets.NetworkSelect, 'interface', _('Only accept replies via'));
                so.optional = true;
                so.rmempty = false;