dnsmasq: fix dhcp-host entries with empty macs
authorJo-Philipp Wich <jo@mein.io>
Tue, 28 Nov 2017 11:38:40 +0000 (11:38 +0000)
committerJo-Philipp Wich <jo@mein.io>
Tue, 28 Nov 2017 17:11:25 +0000 (18:11 +0100)
Due to improper localization of helper variables, "config host" entries
without a given mac address may inherit the mac address of a preceeding,
leading to invalid generated netive configuration.

Fix the issue by marking the "macs" and "tags" helper variables in
dhcp_host_add() local, avoiding the need for explicitely resetting them
with each invocation.

Reported-by: Russell Senior <russell@personaltelco.net>
Tested-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
package/network/services/dnsmasq/files/dnsmasq.init

index 88c2ce6..2fd56ed 100644 (file)
@@ -277,7 +277,7 @@ dhcp_match_add() {
 
 dhcp_host_add() {
        local cfg="$1"
-       local hosttag nametime addrs duids
+       local hosttag nametime addrs duids macs tags
 
        config_get_bool force "$cfg" force 0
 
@@ -305,7 +305,6 @@ dhcp_host_add() {
        if [ -n "$mac" ]; then
                # --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap
                # many MAC are possible to track a laptop ON/OFF dock
-               macs=""
                for m in $mac; do append macs "$m" ","; done
        fi
 
@@ -326,7 +325,6 @@ dhcp_host_add() {
                hex_to_hostid hostid "$hostid"
        fi
 
-       tags=""
        if [ -n "$tag" ]; then
                for t in $tag; do append tags "$t" ",set:"; done
        fi