Skip to content

Commit bc099ba

Browse files
authored
Guard against hostnames/avahi responses with spaces
1 parent 646ec30 commit bc099ba

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

tools/wled-tools

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,23 @@ EOF
6868
}
6969

7070
# Discover devices using mDNS
71-
discover_devices() {
72-
if ! command -v avahi-browse &> /dev/null; then
73-
log "ERROR" "$RED" "'avahi-browse' is required but not installed."
74-
exit 1
75-
fi
71+
discover_devices() {
72+
if ! command -v avahi-browse &> /dev/null; then
73+
log "ERROR" "$RED" "'avahi-browse' is required but not installed."
74+
exit 1
75+
fi
7676

77-
mapfile -t raw_devices < <(avahi-browse _wled._tcp --terminate -r -p | awk -F';' '/^=/ {print $7, $8, $9}')
77+
# Map avahi responses to strings seperated by 0x1F (unit separator)
78+
mapfile -t raw_devices < <(avahi-browse _wled._tcp --terminate -r -p | awk -F';' '/^=/ {print $7"\x1F"$8"\x1F"$9}')
7879

79-
local devices_array=()
80-
for device in "${raw_devices[@]}"; do
81-
read -r hostname address port <<< "$device"
82-
devices_array+=("$hostname" "$address" "$port")
83-
done
80+
local devices_array=()
81+
for device in "${raw_devices[@]}"; do
82+
IFS=$'\x1F' read -r hostname address port <<< "$device"
83+
devices_array+=("$hostname" "$address" "$port")
84+
done
8485

85-
echo "${devices_array[@]}"
86-
}
86+
echo "${devices_array[@]}"
87+
}
8788

8889
# Backup one device
8990
backup_one() {

0 commit comments

Comments
 (0)