ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/libs/avahi/Makefile b/external/subpack/libs/avahi/Makefile
new file mode 100644
index 0000000..4948dfe
--- /dev/null
+++ b/external/subpack/libs/avahi/Makefile
@@ -0,0 +1,373 @@
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=avahi
+PKG_VERSION:=0.8
+PKG_RELEASE:=9
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/lathiat/avahi/releases/download/v$(PKG_VERSION) \
+ https://avahi.org/download
+PKG_HASH:=060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda
+
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:avahi:avahi
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/avahi/Default
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=An mDNS/DNS-SD implementation
+ URL:=http://www.avahi.org/
+endef
+
+define Package/avahi/Default/description
+ Avahi is an mDNS/DNS-SD (aka RendezVous/Bonjour/ZeroConf)
+ implementation (library). It facilitates
+ service discovery on a local network -- this means that
+ you can plug your laptop or computer into a network and
+ instantly be able to view other people who you can chat with,
+ find printers to print to or find files being shared.
+ This kind of technology is already found in MacOS X
+ (branded 'Rendezvous', 'Bonjour' and sometimes 'ZeroConf')
+ and is very convenient.
+endef
+
+define Package/libavahi/Default
+ $(call Package/avahi/Default)
+ SECTION:=libs
+ CATEGORY:=Libraries
+ PROVIDES:=libavahi
+ DEPENDS:=+libpthread
+endef
+
+define Package/libavahi/description
+$(call Package/avahi/Default/description)
+ .
+ The libavahi package contains the mDNS/DNS-SD shared libraries,
+ used by other programs. Specifically, it provides
+ libavahi-core and libavahi-common libraries.
+endef
+
+define Package/avahi-autoipd
+ $(call Package/avahi/Default)
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+libdaemon
+ TITLE:=IPv4LL network address configuration daemon
+endef
+
+define Package/avahi-autoipd/description
+$(call Package/avahi/Default/description)
+ .
+ This package implements IPv4LL, "Dynamic Configuration of IPv4 Link-Local
+ Addresses" (IETF RFC3927), a protocol for automatic IP address configuration
+ from the link-local 169.254.0.0/16 range without the need for a central
+ server. It is primarily intended to be used in ad-hoc networks which lack a
+ DHCP server.
+endef
+
+define Package/avahi-dbus-daemon
+ $(call Package/avahi/Default)
+ PROVIDES:=avahi-daemon
+ VARIANT:=dbus
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+libavahi-dbus-support +libexpat +librt +libdaemon
+ TITLE+= (daemon)
+endef
+
+define Package/avahi-nodbus-daemon
+ $(call Package/avahi/Default)
+ PROVIDES:=avahi-daemon
+ VARIANT:=nodbus
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+libavahi-nodbus-support +libexpat +librt +libdaemon
+ TITLE+= (daemon)
+ USERID:=avahi=105:avahi=105
+endef
+
+define Package/avahi-daemon/description
+$(call Package/avahi/Default/description)
+ .
+ This package contains an mDNS/DNS-SD daemon.
+endef
+
+Package/avahi-dbus-daemon/description=$(Package/avahi-daemon/description)
+Package/avahi-nodbus-daemon/description=$(Package/avahi-daemon/description)
+
+define Package/avahi-daemon/conffiles
+/etc/avahi/avahi-daemon.conf
+endef
+
+Package/avahi-dbus-daemon/conffiles=$(Package/avahi-daemon/conffiles)
+Package/avahi-nodbus-daemon/conffiles=$(Package/avahi-daemon/conffiles)
+
+define Package/avahi-daemon-service-http
+ $(call Package/avahi/Default)
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+avahi-daemon
+ TITLE:=Announce HTTP service
+endef
+
+define Package/avahi-daemon-service-http/description
+$(call Package/avahi/Default/description)
+ .
+ This package contains the service definition for announcing HTTP service.
+endef
+
+define Package/avahi-daemon-service-http/conffiles
+/etc/avahi/services/http.service
+endef
+
+define Package/avahi-daemon-service-ssh
+ $(call Package/avahi/Default)
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+avahi-daemon
+ TITLE:=Announce SSH service
+endef
+
+define Package/avahi-daemon-service-ssh/description
+$(call Package/avahi/Default/description)
+ .
+ This package contains the service definition for announcing SSH service.
+endef
+
+define Package/avahi-daemon-service-ssh/conffiles
+/etc/avahi/services/ssh.service
+endef
+
+define Package/avahi-dnsconfd
+ $(call Package/avahi/Default)
+ SUBMENU:=IP Addresses and Names
+ DEPENDS:=+libavahi +libdaemon +libpthread
+ TITLE:=A Unicast DNS server using avahi-daemon
+endef
+
+define Package/avahi-dnsconfd/description
+$(call Package/avahi/Default/description)
+ .
+ This package contains a Unicast DNS server from mDNS/DNS-SD configuration
+ daemon, which may be used to configure conventional DNS servers using mDNS
+ in a DHCP-like fashion. Especially useful on IPv6.
+endef
+
+define Package/libavahi-dbus-support
+ $(call Package/libavahi/Default)
+ VARIANT:=dbus
+ DEPENDS:=+dbus
+ TITLE+= (D-Bus support)
+endef
+
+define Package/libavahi-nodbus-support
+ $(call Package/libavahi/Default)
+ VARIANT:=nodbus
+ TITLE+= (No D-Bus)
+endef
+
+define Package/libavahi-dbus-support/description
+$(call Package/libavahi/description)
+ .
+ The libavahi-dbus-support package enables
+ D-Bus support in avahi, needed to support
+ the libavahi-client library and avahi-utils.
+ .
+ Selecting this package modifies the build configuration
+ so that avahi packages are built with support for D-BUS enabled;
+ it does not generate a separate binary of its own.
+ It also automatically adds the D-Bus package to the build.
+ libavahi-dbus-support is selected automatically if you select
+ libavahi-client or avahi-utils.
+endef
+
+define Package/libavahi-nodbus-support/description
+$(call Package/libavahi/description)
+ .
+ Selecting this package modifies the build configuration
+ so that avahi packages are built without support for D-BUS enabled;
+ it does not generate a separate binary of its own.
+endef
+
+define Package/libavahi-client
+ $(call Package/avahi/Default)
+ SECTION:=libs
+ CATEGORY:=Libraries
+ VARIANT:=dbus
+ DEPENDS:=+avahi-dbus-daemon
+ TITLE+= (libavahi-client library)
+endef
+
+define Package/libavahi-client/description
+$(call Package/avahi/Default/description)
+ .
+ This packages adds the libavahi-client library.
+ It also automatically adds the required
+ libavahi-dbus-support and the avahi-dbus-daemon packages.
+ For more information please see the avahi documentation.
+endef
+
+define Package/avahi-utils
+ $(call Package/avahi/Default)
+ SUBMENU:=IP Addresses and Names
+ VARIANT:=dbus
+ DEPENDS:=+libavahi-client +libgdbm
+ TITLE+= (utilities)
+endef
+
+define Package/avahi-utils/description
+$(call Package/avahi/Default/description)
+ .
+ This packages installs the following avahi utility programs:
+ avahi-browse, avahi-publish, avahi-resolve, avahi-set-host-name.
+ It also automatically adds the required libavahi-client package.
+ For more information please see the avahi documentation.
+endef
+
+TARGET_CFLAGS += $(FPIC) -DGETTEXT_PACKAGE
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-static \
+ --disable-glib \
+ --disable-gobject \
+ --disable-introspection \
+ --disable-qt3 \
+ --disable-qt4 \
+ --disable-qt5 \
+ --disable-gtk \
+ --disable-gtk3 \
+ --disable-dbm \
+ --enable-gdbm \
+ --enable-libdaemon \
+ --disable-libevent \
+ --disable-python \
+ --disable-python-dbus \
+ --disable-mono \
+ --disable-monodoc \
+ --disable-doxygen-doc \
+ --disable-doxygen-dot \
+ --disable-doxygen-man \
+ --disable-doxygen-rtf \
+ --disable-doxygen-xml \
+ --disable-doxygen-chm \
+ --disable-doxygen-chi \
+ --disable-doxygen-html \
+ --disable-doxygen-ps \
+ --disable-doxygen-pdf \
+ --disable-manpages \
+ --disable-xmltoman \
+ --disable-tests \
+ --with-xml=expat \
+ --with-distro=none \
+ --with-avahi-user=nobody \
+ --with-avahi-group=nogroup \
+ --with-avahi-priv-access-group=nogroup \
+ --with-autoipd-user=nobody \
+ --with-autoipd-group=nogroup
+
+ifeq ($(BUILD_VARIANT),dbus)
+CONFIGURE_ARGS += \
+ --enable-dbus
+else
+CONFIGURE_ARGS += \
+ --disable-dbus
+endif
+
+CONFIGURE_VARS+= \
+ CFLAGS="$$$$CFLAGS -DNDEBUG -DDISABLE_SYSTEMD" \
+ ac_cv_header_sys_capability_h=no
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libavahi/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-{common,core}.so.* $(1)/usr/lib/
+endef
+
+define Package/libavahi-dbus-support/install
+ $(call Package/libavahi/install,$(1))
+ $(INSTALL_DIR) $(1)/etc/dbus-1/system.d
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/dbus-1/system.d/* $(1)/etc/dbus-1/system.d
+endef
+
+Package/libavahi-nodbus-support/install=$(Package/libavahi/install)
+
+define Package/libavahi-client/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-client.so.* $(1)/usr/lib/
+endef
+
+define Package/avahi-utils/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+endef
+
+define Package/avahi-autoipd/install
+ $(INSTALL_DIR) $(1)/etc/avahi
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/etc/avahi/avahi-autoipd.action $(1)/etc/avahi/
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-autoipd $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/lib/netifd/proto
+ $(INSTALL_BIN) ./files/netifd-autoip.sh $(1)/lib/netifd/proto/autoip.sh
+endef
+
+define Package/avahi-daemon/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-daemon $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc/avahi
+ $(INSTALL_DATA) ./files/avahi-daemon.conf $(1)/etc/avahi/
+ # install empty service directory so that user knows where
+ # to place custom service files
+ $(INSTALL_DIR) $(1)/etc/avahi/services
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/avahi-daemon.init $(1)/etc/init.d/avahi-daemon
+endef
+
+Package/avahi-dbus-daemon/install=$(Package/avahi-daemon/install)
+Package/avahi-nodbus-daemon/install=$(Package/avahi-daemon/install)
+
+define Package/avahi-daemon-service-http/install
+ $(INSTALL_DIR) $(1)/etc/avahi/services
+ $(INSTALL_DATA) ./files/service-http $(1)/etc/avahi/services/http.service
+endef
+
+define Package/avahi-daemon-service-ssh/install
+ $(INSTALL_DIR) $(1)/etc/avahi/services
+ $(INSTALL_DATA) ./files/service-ssh $(1)/etc/avahi/services/ssh.service
+endef
+
+define Package/avahi-dnsconfd/install
+ $(INSTALL_DIR) $(1)/etc/avahi
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/etc/avahi/avahi-dnsconfd.action $(1)/etc/avahi/
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-dnsconfd $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,libavahi-client))
+$(eval $(call BuildPackage,avahi-utils))
+$(eval $(call BuildPackage,libavahi-dbus-support))
+$(eval $(call BuildPackage,libavahi-nodbus-support))
+$(eval $(call BuildPackage,avahi-autoipd))
+$(eval $(call BuildPackage,avahi-dbus-daemon))
+$(eval $(call BuildPackage,avahi-nodbus-daemon))
+$(eval $(call BuildPackage,avahi-daemon-service-http))
+$(eval $(call BuildPackage,avahi-daemon-service-ssh))
+$(eval $(call BuildPackage,avahi-dnsconfd))
diff --git a/external/subpack/libs/avahi/files/avahi-daemon.conf b/external/subpack/libs/avahi/files/avahi-daemon.conf
new file mode 100644
index 0000000..3ef0788
--- /dev/null
+++ b/external/subpack/libs/avahi/files/avahi-daemon.conf
@@ -0,0 +1,28 @@
+[server]
+#host-name=foo
+#domain-name=local
+use-ipv4=yes
+use-ipv6=yes
+check-response-ttl=no
+use-iff-running=no
+
+[publish]
+publish-addresses=yes
+publish-hinfo=yes
+publish-workstation=no
+publish-domain=yes
+#publish-dns-servers=192.168.1.1
+#publish-resolv-conf-dns-servers=yes
+
+[reflector]
+enable-reflector=no
+reflect-ipv=no
+
+[rlimits]
+#rlimit-as=
+rlimit-core=0
+rlimit-data=4194304
+rlimit-fsize=0
+rlimit-nofile=30
+rlimit-stack=4194304
+rlimit-nproc=3
diff --git a/external/subpack/libs/avahi/files/avahi-daemon.init b/external/subpack/libs/avahi/files/avahi-daemon.init
new file mode 100644
index 0000000..f580a31
--- /dev/null
+++ b/external/subpack/libs/avahi/files/avahi-daemon.init
@@ -0,0 +1,18 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+START=61
+
+USE_PROCD=1
+PROG=avahi-daemon
+
+start_service() {
+ procd_open_instance
+ procd_set_param command "$PROG"
+ procd_append_param command -s
+ procd_set_param respawn
+ procd_close_instance
+}
+
+reload_service() {
+ procd_send_signal "$PROG"
+}
diff --git a/external/subpack/libs/avahi/files/netifd-autoip.sh b/external/subpack/libs/avahi/files/netifd-autoip.sh
new file mode 100755
index 0000000..be6725b
--- /dev/null
+++ b/external/subpack/libs/avahi/files/netifd-autoip.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+. /lib/functions.sh
+. ../netifd-proto.sh
+init_proto "$@"
+
+proto_autoip_setup() {
+ local config="$1"
+ local iface="$2"
+
+ proto_export "INTERFACE=$config"
+ proto_run_command "$config" avahi-autoipd "$iface"
+}
+
+proto_autoip_teardown() {
+ local interface="$1"
+ proto_kill_command "$interface"
+}
+
+add_protocol autoip
diff --git a/external/subpack/libs/avahi/files/service-http b/external/subpack/libs/avahi/files/service-http
new file mode 100644
index 0000000..3262037
--- /dev/null
+++ b/external/subpack/libs/avahi/files/service-http
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name replace-wildcards="yes">%h</name>
+ <service>
+ <type>_http._tcp</type>
+ <port>80</port>
+ <txt-record>path=/</txt-record>
+ </service>
+</service-group>
diff --git a/external/subpack/libs/avahi/files/service-ssh b/external/subpack/libs/avahi/files/service-ssh
new file mode 100644
index 0000000..b445851
--- /dev/null
+++ b/external/subpack/libs/avahi/files/service-ssh
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name replace-wildcards="yes">%h</name>
+ <service>
+ <type>_ssh._tcp</type>
+ <port>22</port>
+ </service>
+</service-group>
diff --git a/external/subpack/libs/avahi/patches/010-pkgconfig.patch b/external/subpack/libs/avahi/patches/010-pkgconfig.patch
new file mode 100644
index 0000000..f5b6f7d
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/010-pkgconfig.patch
@@ -0,0 +1,178 @@
+From 229b216d274977967790e6e2cfe13dd38effa2cf Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 16 Sep 2019 18:04:58 -0700
+Subject: [PATCH] pkgconfig: Match the first three parameters
+
+For consistency between projects. Might also fix several cross compilation
+cases.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ avahi-client.pc.in | 4 ++--
+ avahi-compat-howl.pc.in | 4 ++--
+ avahi-compat-libdns_sd.pc.in | 4 ++--
+ avahi-core.pc.in | 4 ++--
+ avahi-glib.pc.in | 4 ++--
+ avahi-gobject.pc.in | 4 ++--
+ avahi-libevent.pc.in | 4 ++--
+ avahi-qt3.pc.in | 4 ++--
+ avahi-qt4.pc.in | 4 ++--
+ avahi-qt5.pc.in | 4 ++--
+ avahi-sharp.pc.in | 2 +-
+ avahi-ui-gtk3.pc.in | 4 ++--
+ avahi-ui-sharp.pc.in | 2 +-
+ avahi-ui.pc.in | 4 ++--
+ 14 files changed, 26 insertions(+), 26 deletions(-)
+
+--- a/avahi-client.pc.in
++++ b/avahi-client.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-client
+--- a/avahi-compat-howl.pc.in
++++ b/avahi-compat-howl.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include/avahi-compat-howl/
+
+ Name: avahi-compat-howl
+--- a/avahi-compat-libdns_sd.pc.in
++++ b/avahi-compat-libdns_sd.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include/avahi-compat-libdns_sd/
+
+ Name: avahi-compat-libdns_sd
+--- a/avahi-core.pc.in
++++ b/avahi-core.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-core
+--- a/avahi-glib.pc.in
++++ b/avahi-glib.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-glib
+--- a/avahi-gobject.pc.in
++++ b/avahi-gobject.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-gobject
+--- a/avahi-libevent.pc.in
++++ b/avahi-libevent.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-libevent
+--- a/avahi-qt3.pc.in
++++ b/avahi-qt3.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-qt3
+--- a/avahi-qt4.pc.in
++++ b/avahi-qt4.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-qt4
+--- a/avahi-qt5.pc.in
++++ b/avahi-qt5.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-qt5
+--- a/avahi-sharp.pc.in
++++ b/avahi-sharp.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+ exec_prefix=@prefix@
+-libdir=@libdir@
++libdir=${exec_prefix}/lib
+
+ Name: avahi-sharp
+ Description: Mono bindings for the Avahi mDNS/DNS-SD stack
+--- a/avahi-ui-gtk3.pc.in
++++ b/avahi-ui-gtk3.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-ui
+--- a/avahi-ui-sharp.pc.in
++++ b/avahi-ui-sharp.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+ exec_prefix=@prefix@
+-libdir=@libdir@
++libdir=${exec_prefix}/lib
+
+ Name: avahi-ui-sharp
+ Description: Mono bindings for the Avahi mDNS/DNS-SD stack
+--- a/avahi-ui.pc.in
++++ b/avahi-ui.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+-exec_prefix=${prefix}
+-libdir=@libdir@
++exec_prefix=@prefix@
++libdir=${exec_prefix}/lib
+ includedir=${prefix}/include
+
+ Name: avahi-ui
diff --git a/external/subpack/libs/avahi/patches/020-revert-runtime-dir-systemd-change.patch b/external/subpack/libs/avahi/patches/020-revert-runtime-dir-systemd-change.patch
new file mode 100644
index 0000000..6a6f903
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/020-revert-runtime-dir-systemd-change.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -1004,7 +1004,7 @@ AC_DEFINE_UNQUOTED(AVAHI_AUTOIPD_GROUP,"
+ #
+ # Avahi runtime dir
+ #
+-avahi_runtime_dir="/run"
++avahi_runtime_dir="${localstatedir}/run"
+ avahi_socket="${avahi_runtime_dir}/avahi-daemon/socket"
+ AC_SUBST(avahi_runtime_dir)
+ AC_SUBST(avahi_socket)
diff --git a/external/subpack/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch b/external/subpack/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch
new file mode 100644
index 0000000..11a0dc7
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch
@@ -0,0 +1,45 @@
+commit 2b6bccca5d9d8ab7f11219a639707b325910a0b1
+Author: Philip Prindeville <philipp@redfish-solutions.com>
+Date: Thu Sep 17 00:27:55 2020 +0000
+
+ Logic for p2p on tunnels incorrectly requires IFF_MULTICAST (#305)
+
+ Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
+
+--- a/avahi-core/iface-linux.c
++++ b/avahi-core/iface-linux.c
+@@ -105,8 +105,8 @@ static void netlink_callback(AvahiNetlin
+ (ifinfomsg->ifi_flags & IFF_UP) &&
+ (!m->server->config.use_iff_running || (ifinfomsg->ifi_flags & IFF_RUNNING)) &&
+ ((ifinfomsg->ifi_flags & IFF_LOOPBACK) ||
+- (ifinfomsg->ifi_flags & IFF_MULTICAST)) &&
+- (m->server->config.allow_point_to_point || !(ifinfomsg->ifi_flags & IFF_POINTOPOINT));
++ (ifinfomsg->ifi_flags & IFF_MULTICAST) ||
++ ((ifinfomsg->ifi_flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point));
+
+ /* Handle interface attributes */
+ l = NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg));
+--- a/avahi-core/iface-pfroute.c
++++ b/avahi-core/iface-pfroute.c
+@@ -81,8 +81,8 @@ static void rtm_info(struct rt_msghdr *r
+ (ifm->ifm_flags & IFF_UP) &&
+ (!m->server->config.use_iff_running || (ifm->ifm_flags & IFF_RUNNING)) &&
+ ((ifm->ifm_flags & IFF_LOOPBACK) ||
+- (ifm->ifm_flags & IFF_MULTICAST)) &&
+- (m->server->config.allow_point_to_point || !(ifm->ifm_flags & IFF_POINTOPOINT));
++ (ifm->ifm_flags & IFF_MULTICAST) ||
++ ((ifm->ifm_flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point));
+
+ avahi_free(hw->name);
+ hw->name = avahi_strndup(sdl->sdl_data, sdl->sdl_nlen);
+@@ -428,8 +428,8 @@ static void if_add_interface(struct lifr
+ (flags & IFF_UP) &&
+ (!m->server->config.use_iff_running || (flags & IFF_RUNNING)) &&
+ ((flags & IFF_LOOPBACK) ||
+- (flags & IFF_MULTICAST)) &&
+- (m->server->config.allow_point_to_point || !(flags & IFF_POINTOPOINT));
++ (flags & IFF_MULTICAST) ||
++ ((flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point));
+ hw->name = avahi_strdup(lifreq->lifr_name);
+ hw->mtu = mtu;
+ /* TODO get mac address */
diff --git a/external/subpack/libs/avahi/patches/200-Fix-NULL-pointer-crashes-from-175.patch b/external/subpack/libs/avahi/patches/200-Fix-NULL-pointer-crashes-from-175.patch
new file mode 100644
index 0000000..fbf8e8e
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/200-Fix-NULL-pointer-crashes-from-175.patch
@@ -0,0 +1,136 @@
+From 9d31939e55280a733d930b15ac9e4dda4497680c Mon Sep 17 00:00:00 2001
+From: Tommi Rantala <tommi.t.rantala@nokia.com>
+Date: Mon, 8 Feb 2021 11:04:43 +0200
+Subject: [PATCH] Fix NULL pointer crashes from #175
+
+avahi-daemon is crashing when running "ping .local".
+The crash is due to failing assertion from NULL pointer.
+Add missing NULL pointer checks to fix it.
+
+Introduced in #175 - merge commit 8f75a045709a780c8cf92a6a21e9d35b593bdecd
+
+[Retrieved from:
+https://github.com/lathiat/avahi/commit/9d31939e55280a733d930b15ac9e4dda4497680c]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ avahi-core/browse-dns-server.c | 5 ++++-
+ avahi-core/browse-domain.c | 5 ++++-
+ avahi-core/browse-service-type.c | 3 +++
+ avahi-core/browse-service.c | 3 +++
+ avahi-core/browse.c | 3 +++
+ avahi-core/resolve-address.c | 5 ++++-
+ avahi-core/resolve-host-name.c | 5 ++++-
+ avahi-core/resolve-service.c | 5 ++++-
+ 8 files changed, 29 insertions(+), 5 deletions(-)
+
+--- a/avahi-core/browse-dns-server.c
++++ b/avahi-core/browse-dns-server.c
+@@ -343,7 +343,10 @@ AvahiSDNSServerBrowser *avahi_s_dns_serv
+ AvahiSDNSServerBrowser* b;
+
+ b = avahi_s_dns_server_browser_prepare(server, interface, protocol, domain, type, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_dns_server_browser_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+--- a/avahi-core/browse-domain.c
++++ b/avahi-core/browse-domain.c
+@@ -253,7 +253,10 @@ AvahiSDomainBrowser *avahi_s_domain_brow
+ AvahiSDomainBrowser *b;
+
+ b = avahi_s_domain_browser_prepare(server, interface, protocol, domain, type, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_domain_browser_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+--- a/avahi-core/browse-service-type.c
++++ b/avahi-core/browse-service-type.c
+@@ -171,6 +171,9 @@ AvahiSServiceTypeBrowser *avahi_s_servic
+ AvahiSServiceTypeBrowser *b;
+
+ b = avahi_s_service_type_browser_prepare(server, interface, protocol, domain, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_type_browser_start(b);
+
+ return b;
+--- a/avahi-core/browse-service.c
++++ b/avahi-core/browse-service.c
+@@ -184,6 +184,9 @@ AvahiSServiceBrowser *avahi_s_service_br
+ AvahiSServiceBrowser *b;
+
+ b = avahi_s_service_browser_prepare(server, interface, protocol, service_type, domain, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_browser_start(b);
+
+ return b;
+--- a/avahi-core/browse.c
++++ b/avahi-core/browse.c
+@@ -634,6 +634,9 @@ AvahiSRecordBrowser *avahi_s_record_brow
+ AvahiSRecordBrowser *b;
+
+ b = avahi_s_record_browser_prepare(server, interface, protocol, key, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_record_browser_start_query(b);
+
+ return b;
+--- a/avahi-core/resolve-address.c
++++ b/avahi-core/resolve-address.c
+@@ -286,7 +286,10 @@ AvahiSAddressResolver *avahi_s_address_r
+ AvahiSAddressResolver *b;
+
+ b = avahi_s_address_resolver_prepare(server, interface, protocol, address, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_address_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+--- a/avahi-core/resolve-host-name.c
++++ b/avahi-core/resolve-host-name.c
+@@ -318,7 +318,10 @@ AvahiSHostNameResolver *avahi_s_host_nam
+ AvahiSHostNameResolver *b;
+
+ b = avahi_s_host_name_resolver_prepare(server, interface, protocol, host_name, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_host_name_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+--- a/avahi-core/resolve-service.c
++++ b/avahi-core/resolve-service.c
+@@ -519,7 +519,10 @@ AvahiSServiceResolver *avahi_s_service_r
+ AvahiSServiceResolver *b;
+
+ b = avahi_s_service_resolver_prepare(server, interface, protocol, name, type, domain, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
diff --git a/external/subpack/libs/avahi/patches/201-Avoid-infinite-loop-in-avahi-daemon-by-handling-HUP-event.patch b/external/subpack/libs/avahi/patches/201-Avoid-infinite-loop-in-avahi-daemon-by-handling-HUP-event.patch
new file mode 100644
index 0000000..6a2123f
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/201-Avoid-infinite-loop-in-avahi-daemon-by-handling-HUP-event.patch
@@ -0,0 +1,36 @@
+From: Riccardo Schirone <sirmy15@gmail.com>
+Date: Fri, 26 Mar 2021 11:50:24 +0100
+Subject: Avoid infinite-loop in avahi-daemon by handling HUP event in
+ client_work
+
+If a client fills the input buffer, client_work() disables the
+AVAHI_WATCH_IN event, thus preventing the function from executing the
+`read` syscall the next times it is called. However, if the client then
+terminates the connection, the socket file descriptor receives a HUP
+event, which is not handled, thus the kernel keeps marking the HUP event
+as occurring. While iterating over the file descriptors that triggered
+an event, the client file descriptor will keep having the HUP event and
+the client_work() function is always called with AVAHI_WATCH_HUP but
+without nothing being done, thus entering an infinite loop.
+
+See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=984938
+
+(cherry picked from commit 447affe29991ee99c6b9732fc5f2c1048a611d3b)
+---
+ avahi-daemon/simple-protocol.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/avahi-daemon/simple-protocol.c
++++ b/avahi-daemon/simple-protocol.c
+@@ -424,6 +424,11 @@ static void client_work(AvahiWatch *watc
+ }
+ }
+
++ if (events & AVAHI_WATCH_HUP) {
++ client_free(c);
++ return;
++ }
++
+ c->server->poll_api->watch_update(
+ watch,
+ (c->outbuf_length > 0 ? AVAHI_WATCH_OUT : 0) |
diff --git a/external/subpack/libs/avahi/patches/202-avahi_dns_packet_consume_uint32-fix-potential-undefined-b.patch b/external/subpack/libs/avahi/patches/202-avahi_dns_packet_consume_uint32-fix-potential-undefined-b.patch
new file mode 100644
index 0000000..c757d6b
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/202-avahi_dns_packet_consume_uint32-fix-potential-undefined-b.patch
@@ -0,0 +1,27 @@
+From: traffic-millions <60914101+traffic-millions@users.noreply.github.com>
+Date: Tue, 3 Mar 2020 11:15:48 +0800
+Subject: avahi_dns_packet_consume_uint32: fix potential undefined behavior
+
+avahi_dns_packet_consume_uint32 left shifts uint8_t values by 8, 16 and 24 bits to combine them into a 32-bit value. This produces an undefined behavior warning with gcc -fsanitize when fed input values of 128 or 255 however in testing no actual unexpected behavior occurs in practice and the 32-bit uint32_t is always correctly produced as the final value is immediately stored into a uint32_t and the compiler appears to handle this "correctly".
+
+Cast the intermediate values to uint32_t to prevent this warning and ensure the intended result is explicit.
+
+Closes: #267
+Closes: #268
+Reference: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19304
+Origin: upstream, 0.9, commit:b897ca43ac100d326d118e5877da710eb7f836f9
+---
+ avahi-core/dns.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/avahi-core/dns.c
++++ b/avahi-core/dns.c
+@@ -455,7 +455,7 @@ int avahi_dns_packet_consume_uint32(Avah
+ return -1;
+
+ d = (uint8_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex);
+- *ret_v = (d[0] << 24) | (d[1] << 16) | (d[2] << 8) | d[3];
++ *ret_v = ((uint32_t)d[0] << 24) | ((uint32_t)d[1] << 16) | ((uint32_t)d[2] << 8) | (uint32_t)d[3];
+ p->rindex += sizeof(uint32_t);
+
+ return 0;
diff --git a/external/subpack/libs/avahi/patches/203-Do-not-disable-timeout-cleanup-on-watch-cleanup.patch b/external/subpack/libs/avahi/patches/203-Do-not-disable-timeout-cleanup-on-watch-cleanup.patch
new file mode 100644
index 0000000..d6d5490
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/203-Do-not-disable-timeout-cleanup-on-watch-cleanup.patch
@@ -0,0 +1,22 @@
+From: Gustavo Noronha Silva <gustavo@noronha.dev.br>
+Date: Sun, 2 Jan 2022 22:29:04 -0300
+Subject: Do not disable timeout cleanup on watch cleanup
+
+This was causing timeouts to never be removed from the linked list that
+tracks them, resulting in both memory and CPU usage to grow larger over
+time.
+---
+ avahi-common/simple-watch.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/avahi-common/simple-watch.c
++++ b/avahi-common/simple-watch.c
+@@ -238,7 +238,7 @@ static void cleanup_watches(AvahiSimpleP
+ destroy_watch(w);
+ }
+
+- s->timeout_req_cleanup = 0;
++ s->watch_req_cleanup = 0;
+ }
+
+ static AvahiTimeout* timeout_new(const AvahiPoll *api, const struct timeval *tv, AvahiTimeoutCallback callback, void *userdata) {
diff --git a/external/subpack/libs/avahi/patches/204-Emit-error-if-requested-service-is-not-found.patch b/external/subpack/libs/avahi/patches/204-Emit-error-if-requested-service-is-not-found.patch
new file mode 100644
index 0000000..c4c87b4
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/204-Emit-error-if-requested-service-is-not-found.patch
@@ -0,0 +1,54 @@
+From: =?utf-8?b?UGV0ciBNZW7FocOtaw==?= <pemensik@redhat.com>
+Date: Thu, 17 Nov 2022 01:51:53 +0100
+Subject: Emit error if requested service is not found
+
+It currently just crashes instead of replying with error. Check return
+value and emit error instead of passing NULL pointer to reply.
+
+Fixes #375
+
+(cherry picked from commit a2696da2f2c50ac43b6c4903f72290d5c3fa9f6f)
+---
+ avahi-daemon/dbus-protocol.c | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+--- a/avahi-daemon/dbus-protocol.c
++++ b/avahi-daemon/dbus-protocol.c
+@@ -375,10 +375,14 @@ static DBusHandlerResult dbus_get_altern
+ }
+
+ t = avahi_alternative_host_name(n);
+- avahi_dbus_respond_string(c, m, t);
+- avahi_free(t);
+-
+- return DBUS_HANDLER_RESULT_HANDLED;
++ if (t) {
++ avahi_dbus_respond_string(c, m, t);
++ avahi_free(t);
++
++ return DBUS_HANDLER_RESULT_HANDLED;
++ } else {
++ return avahi_dbus_respond_error(c, m, AVAHI_ERR_NOT_FOUND, "Hostname not found");
++ }
+ }
+
+ static DBusHandlerResult dbus_get_alternative_service_name(DBusConnection *c, DBusMessage *m, DBusError *error) {
+@@ -389,10 +393,14 @@ static DBusHandlerResult dbus_get_altern
+ }
+
+ t = avahi_alternative_service_name(n);
+- avahi_dbus_respond_string(c, m, t);
+- avahi_free(t);
+-
+- return DBUS_HANDLER_RESULT_HANDLED;
++ if (t) {
++ avahi_dbus_respond_string(c, m, t);
++ avahi_free(t);
++
++ return DBUS_HANDLER_RESULT_HANDLED;
++ } else {
++ return avahi_dbus_respond_error(c, m, AVAHI_ERR_NOT_FOUND, "Service not found");
++ }
+ }
+
+ static DBusHandlerResult dbus_create_new_entry_group(DBusConnection *c, DBusMessage *m, DBusError *error) {
diff --git a/external/subpack/libs/avahi/patches/205-conf-file-line-lengths.patch b/external/subpack/libs/avahi/patches/205-conf-file-line-lengths.patch
new file mode 100644
index 0000000..3ea8a1d
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/205-conf-file-line-lengths.patch
@@ -0,0 +1,11 @@
+--- a/avahi-daemon/ini-file-parser.c
++++ b/avahi-daemon/ini-file-parser.c
+@@ -50,7 +50,7 @@ AvahiIniFile* avahi_ini_file_load(const
+
+ line = 0;
+ while (!feof(fo)) {
+- char ln[256], *s, *e;
++ char ln[1024], *s, *e;
+ AvahiIniFilePair *pair;
+
+ if (!(fgets(ln, sizeof(ln), fo)))
diff --git a/external/subpack/libs/avahi/patches/300-CVE-2023-38469.patch b/external/subpack/libs/avahi/patches/300-CVE-2023-38469.patch
new file mode 100644
index 0000000..cdc99b2
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/300-CVE-2023-38469.patch
@@ -0,0 +1,41 @@
+From a337a1ba7d15853fb56deef1f464529af6e3a1cf Mon Sep 17 00:00:00 2001
+From: Evgeny Vereshchagin <evvers@ya.ru>
+Date: Mon, 23 Oct 2023 20:29:31 +0000
+Subject: [PATCH] core: reject overly long TXT resource records
+
+Closes https://github.com/lathiat/avahi/issues/455
+
+CVE-2023-38469
+---
+ avahi-core/rr.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/avahi-core/rr.c
++++ b/avahi-core/rr.c
+@@ -32,6 +32,7 @@
+ #include <avahi-common/malloc.h>
+ #include <avahi-common/defs.h>
+
++#include "dns.h"
+ #include "rr.h"
+ #include "log.h"
+ #include "util.h"
+@@ -688,11 +689,17 @@ int avahi_record_is_valid(AvahiRecord *r
+ case AVAHI_DNS_TYPE_TXT: {
+
+ AvahiStringList *strlst;
++ size_t used = 0;
+
+- for (strlst = r->data.txt.string_list; strlst; strlst = strlst->next)
++ for (strlst = r->data.txt.string_list; strlst; strlst = strlst->next) {
+ if (strlst->size > 255 || strlst->size <= 0)
+ return 0;
+
++ used += 1+strlst->size;
++ if (used > AVAHI_DNS_RDATA_MAX)
++ return 0;
++ }
++
+ return 1;
+ }
+ }
diff --git a/external/subpack/libs/avahi/patches/301-CVE-2023-38470.patch b/external/subpack/libs/avahi/patches/301-CVE-2023-38470.patch
new file mode 100644
index 0000000..8f0e743
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/301-CVE-2023-38470.patch
@@ -0,0 +1,48 @@
+From b6cf29f98adce7355e8c51a6af1e338a5f94e16e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
+Date: Tue, 11 Apr 2023 15:29:59 +0200
+Subject: [PATCH] Ensure each label is at least one byte long
+
+The only allowed exception is single dot, where it should return empty
+string.
+
+Fixes #454.
+---
+ avahi-common/domain-test.c | 14 ++++++++++++++
+ avahi-common/domain.c | 2 +-
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+
+--- a/avahi-common/domain-test.c
++++ b/avahi-common/domain-test.c
+@@ -45,6 +45,20 @@ int main(AVAHI_GCC_UNUSED int argc, AVAH
+ printf("%s\n", s = avahi_normalize_name_strdup("fo\\\\o\\..f oo."));
+ avahi_free(s);
+
++ printf("%s\n", s = avahi_normalize_name_strdup("."));
++ avahi_free(s);
++
++ s = avahi_normalize_name_strdup(",.=.}.=.?-.}.=.?.?.}.}.?.?.?.z.?.?.}.}."
++ "}.?.?.?.r.=.=.}.=.?.}}.}.?.?.?.zM.=.=.?.?.}.}.?.?.}.}.}"
++ ".?.?.?.r.=.=.}.=.?.}}.}.?.?.?.zM.=.=.?.?.}.}.?.?.?.zM.?`"
++ "?.}.}.}.?.?.?.r.=.?.}.=.?.?.}.?.?.?.}.=.?.?.}??.}.}.?.?."
++ "?.z.?.?.}.}.}.?.?.?.r.=.=.}.=.?.}}.}.?.?.?.zM.?`?.}.}.}."
++ "??.?.zM.?`?.}.}.}.?.?.?.r.=.?.}.=.?.?.}.?.?.?.}.=.?.?.}?"
++ "?.}.}.?.?.?.z.?.?.}.}.}.?.?.?.r.=.=.}.=.?.}}.}.?.?.?.zM."
++ "?`?.}.}.}.?.?.?.r.=.=.?.?`.?.?}.}.}.?.?.?.r.=.?.}.=.?.?."
++ "}.?.?.?.}.=.?.?.}");
++ assert(s == NULL);
++
+ printf("%i\n", avahi_domain_equal("\\065aa bbb\\.\\046cc.cc\\\\.dee.fff.", "Aaa BBB\\.\\.cc.cc\\\\.dee.fff"));
+ printf("%i\n", avahi_domain_equal("A", "a"));
+
+--- a/avahi-common/domain.c
++++ b/avahi-common/domain.c
+@@ -201,7 +201,7 @@ char *avahi_normalize_name(const char *s
+ }
+
+ if (!empty) {
+- if (size < 1)
++ if (size < 2)
+ return NULL;
+
+ *(r++) = '.';
diff --git a/external/subpack/libs/avahi/patches/302-CVE-2023-38471.patch b/external/subpack/libs/avahi/patches/302-CVE-2023-38471.patch
new file mode 100644
index 0000000..584d3c5
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/302-CVE-2023-38471.patch
@@ -0,0 +1,66 @@
+From d486bca7e7912c6a4b547a3c607db0d0d3124bbf Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 23 Oct 2023 13:38:35 +0200
+Subject: [PATCH] core: extract host name using avahi_unescape_label()
+
+Previously we could create invalid escape sequence when we split the
+string on dot. For example, from valid host name "foo\\.bar" we have
+created invalid name "foo\\" and tried to set that as the host name
+which crashed the daemon.
+
+Fixes #453
+
+CVE-2023-38471
+---
+ avahi-core/server.c | 27 +++++++++++++++++++++------
+ 1 file changed, 21 insertions(+), 6 deletions(-)
+
+--- a/avahi-core/server.c
++++ b/avahi-core/server.c
+@@ -1295,7 +1295,11 @@ static void update_fqdn(AvahiServer *s)
+ }
+
+ int avahi_server_set_host_name(AvahiServer *s, const char *host_name) {
+- char *hn = NULL;
++ char label_escaped[AVAHI_LABEL_MAX*4+1];
++ char label[AVAHI_LABEL_MAX];
++ char *hn = NULL, *h;
++ size_t len;
++
+ assert(s);
+
+ AVAHI_CHECK_VALIDITY(s, !host_name || avahi_is_valid_host_name(host_name), AVAHI_ERR_INVALID_HOST_NAME);
+@@ -1305,17 +1309,28 @@ int avahi_server_set_host_name(AvahiServ
+ else
+ hn = avahi_normalize_name_strdup(host_name);
+
+- hn[strcspn(hn, ".")] = 0;
++ h = hn;
++ if (!avahi_unescape_label((const char **)&hn, label, sizeof(label))) {
++ avahi_free(h);
++ return AVAHI_ERR_INVALID_HOST_NAME;
++ }
++
++ avahi_free(h);
+
+- if (avahi_domain_equal(s->host_name, hn) && s->state != AVAHI_SERVER_COLLISION) {
+- avahi_free(hn);
++ h = label_escaped;
++ len = sizeof(label_escaped);
++ if (!avahi_escape_label(label, strlen(label), &h, &len))
++ return AVAHI_ERR_INVALID_HOST_NAME;
++
++ if (avahi_domain_equal(s->host_name, label_escaped) && s->state != AVAHI_SERVER_COLLISION)
+ return avahi_server_set_errno(s, AVAHI_ERR_NO_CHANGE);
+- }
+
+ withdraw_host_rrs(s);
+
+ avahi_free(s->host_name);
+- s->host_name = hn;
++ s->host_name = avahi_strdup(label_escaped);
++ if (!s->host_name)
++ return AVAHI_ERR_NO_MEMORY;
+
+ update_fqdn(s);
+
diff --git a/external/subpack/libs/avahi/patches/303-CVE-2023-38472.patch b/external/subpack/libs/avahi/patches/303-CVE-2023-38472.patch
new file mode 100644
index 0000000..2d18926
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/303-CVE-2023-38472.patch
@@ -0,0 +1,36 @@
+From d886dc5b1d3d2b76aaa38289245acfdfa979ca6c Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 19 Oct 2023 17:36:44 +0200
+Subject: [PATCH] core: make sure there is rdata to process before parsing it
+
+Fixes #452
+
+CVE-2023-38472
+---
+ avahi-client/client-test.c | 3 +++
+ avahi-daemon/dbus-entry-group.c | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/avahi-client/client-test.c
++++ b/avahi-client/client-test.c
+@@ -258,6 +258,9 @@ int main (AVAHI_GCC_UNUSED int argc, AVA
+ printf("%s\n", avahi_strerror(avahi_entry_group_add_service (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "Lathiat's Site", "_http._tcp", NULL, NULL, 80, "foo=bar", NULL)));
+ printf("add_record: %d\n", avahi_entry_group_add_record (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "TestX", 0x01, 0x10, 120, "\5booya", 6));
+
++ error = avahi_entry_group_add_record (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "TestX", 0x01, 0x10, 120, "", 0);
++ assert(error != AVAHI_OK);
++
+ avahi_entry_group_commit (group);
+
+ domain = avahi_domain_browser_new (avahi, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, NULL, AVAHI_DOMAIN_BROWSER_BROWSE, 0, avahi_domain_browser_callback, (char*) "omghai3u");
+--- a/avahi-daemon/dbus-entry-group.c
++++ b/avahi-daemon/dbus-entry-group.c
+@@ -340,7 +340,7 @@ DBusHandlerResult avahi_dbus_msg_entry_g
+ if (!(r = avahi_record_new_full (name, clazz, type, ttl)))
+ return avahi_dbus_respond_error(c, m, AVAHI_ERR_NO_MEMORY, NULL);
+
+- if (avahi_rdata_parse (r, rdata, size) < 0) {
++ if (!rdata || avahi_rdata_parse (r, rdata, size) < 0) {
+ avahi_record_unref (r);
+ return avahi_dbus_respond_error(c, m, AVAHI_ERR_INVALID_RDATA, NULL);
+ }
diff --git a/external/subpack/libs/avahi/patches/304-CVE-2023-38473.patch b/external/subpack/libs/avahi/patches/304-CVE-2023-38473.patch
new file mode 100644
index 0000000..7071751
--- /dev/null
+++ b/external/subpack/libs/avahi/patches/304-CVE-2023-38473.patch
@@ -0,0 +1,100 @@
+From 5edc17b7913cac824daa09fca9976c9c19e88822 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 11 Oct 2023 17:45:44 +0200
+Subject: [PATCH] common: derive alternative host name from its unescaped
+ version
+
+Normalization of input makes sure we don't have to deal with special
+cases like unescaped dot at the end of label.
+
+Fixes #451 #487
+CVE-2023-38473
+---
+ avahi-common/alternative-test.c | 3 +++
+ avahi-common/alternative.c | 27 +++++++++++++++++++--------
+ 2 files changed, 22 insertions(+), 8 deletions(-)
+
+--- a/avahi-common/alternative-test.c
++++ b/avahi-common/alternative-test.c
+@@ -31,6 +31,9 @@ int main(AVAHI_GCC_UNUSED int argc, AVAH
+ const char* const test_strings[] = {
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXüüüüüüü",
++ ").",
++ "\\.",
++ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\",
+ "gurke",
+ "-",
+ " #",
+--- a/avahi-common/alternative.c
++++ b/avahi-common/alternative.c
+@@ -49,15 +49,20 @@ static void drop_incomplete_utf8(char *c
+ }
+
+ char *avahi_alternative_host_name(const char *s) {
++ char label[AVAHI_LABEL_MAX], alternative[AVAHI_LABEL_MAX*4+1];
++ char *alt, *r, *ret;
+ const char *e;
+- char *r;
++ size_t len;
+
+ assert(s);
+
+ if (!avahi_is_valid_host_name(s))
+ return NULL;
+
+- if ((e = strrchr(s, '-'))) {
++ if (!avahi_unescape_label(&s, label, sizeof(label)))
++ return NULL;
++
++ if ((e = strrchr(label, '-'))) {
+ const char *p;
+
+ e++;
+@@ -74,19 +79,18 @@ char *avahi_alternative_host_name(const
+
+ if (e) {
+ char *c, *m;
+- size_t l;
+ int n;
+
+ n = atoi(e)+1;
+ if (!(m = avahi_strdup_printf("%i", n)))
+ return NULL;
+
+- l = e-s-1;
++ len = e-label-1;
+
+- if (l >= AVAHI_LABEL_MAX-1-strlen(m)-1)
+- l = AVAHI_LABEL_MAX-1-strlen(m)-1;
++ if (len >= AVAHI_LABEL_MAX-1-strlen(m)-1)
++ len = AVAHI_LABEL_MAX-1-strlen(m)-1;
+
+- if (!(c = avahi_strndup(s, l))) {
++ if (!(c = avahi_strndup(label, len))) {
+ avahi_free(m);
+ return NULL;
+ }
+@@ -100,7 +104,7 @@ char *avahi_alternative_host_name(const
+ } else {
+ char *c;
+
+- if (!(c = avahi_strndup(s, AVAHI_LABEL_MAX-1-2)))
++ if (!(c = avahi_strndup(label, AVAHI_LABEL_MAX-1-2)))
+ return NULL;
+
+ drop_incomplete_utf8(c);
+@@ -109,6 +113,13 @@ char *avahi_alternative_host_name(const
+ avahi_free(c);
+ }
+
++ alt = alternative;
++ len = sizeof(alternative);
++ ret = avahi_escape_label(r, strlen(r), &alt, &len);
++
++ avahi_free(r);
++ r = avahi_strdup(ret);
++
+ assert(avahi_is_valid_host_name(r));
+
+ return r;