procd: make mDNS TXT record parsing more solid
authorChristian Marangi <ansuelsmth@gmail.com>
Mon, 29 Apr 2024 19:17:31 +0000 (21:17 +0200)
committerRISCi_ATOM <bob@bobcall.me>
Wed, 15 May 2024 15:37:15 +0000 (11:37 -0400)
commit5e46fcf2aaa121d260643a948f3e5b3aa2ec8573
treec70a1b6abb518c31bf2f43e908fd389cc2213ba9
parent86da453c827ce6e9bf59c44e52be3d4c8e927d33
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: b0d9dcf84dd0 ("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 commit 4b043047132de0b3d90619d538f103af6153fa5a)
package/system/procd/files/procd.sh