mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
procd: make mDNS TXT record parsing more solid
mDNS broadcast can't accept empty TXT record and would fail registration. Current procd_add_mdns_service checks only if the first passed arg is empty but don't make any verification on the other args permittins insertion of empty values in TXT record. Example: procd_add_mdns "blah" \ "tcp" "50" \ "1" \ "" \ "3" Produce: { "blah_50": { "service": "_blah._tcp.local", "port": 50, "txt": [ "1", "", "3" ] } } The middle empty TXT record should never be included as it's empty. This can happen with scripts that make fragile parsing and include variables even if they are empty. Prevent this and make the TXT record more solid by checking every provided TXT record and include only the non-empty ones. The fixed JSON is the following: { "blah_50": { "service": "_blah._tcp.local", "port": 50, "txt": [ "1", "3" ] } } Fixes:b0d9dcf84d
("procd: update to latest git HEAD") Reported-by: Paul Donald <newtwen@gmail.com> Link: https://github.com/openwrt/openwrt/pull/15331 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit4b04304713
)
This commit is contained in:
parent
8695bc3442
commit
2541ff391f
@ -570,18 +570,21 @@ _procd_set_config_changed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
procd_add_mdns_service() {
|
procd_add_mdns_service() {
|
||||||
local service proto port
|
local service proto port txt_count=0
|
||||||
service=$1; shift
|
service=$1; shift
|
||||||
proto=$1; shift
|
proto=$1; shift
|
||||||
port=$1; shift
|
port=$1; shift
|
||||||
json_add_object "${service}_$port"
|
json_add_object "${service}_$port"
|
||||||
json_add_string "service" "_$service._$proto.local"
|
json_add_string "service" "_$service._$proto.local"
|
||||||
json_add_int port "$port"
|
json_add_int port "$port"
|
||||||
[ -n "$1" ] && {
|
for txt in "$@"; do
|
||||||
json_add_array txt
|
[ -z "$txt" ] && continue
|
||||||
for txt in "$@"; do json_add_string "" "$txt"; done
|
txt_count=$((txt_count+1))
|
||||||
json_select ..
|
[ $txt_count -eq 1 ] && json_add_array txt
|
||||||
}
|
json_add_string "" "$txt"
|
||||||
|
done
|
||||||
|
[ $txt_count -gt 0 ] && json_select ..
|
||||||
|
|
||||||
json_select ..
|
json_select ..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user