| From a2696da2f2c50ac43b6c4903f72290d5c3fa9f6f Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com> |
| Date: Thu, 17 Nov 2022 01:51:53 +0100 |
| Subject: [PATCH] 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 |
| |
| Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/avahi/tree/debian/patches/CVE-2023-1981.patch?h=ubuntu/jammy-security |
| Upstream commit https://github.com/lathiat/avahi/commit/a2696da2f2c50ac43b6c4903f72290d5c3fa9f6f] |
| CVE: CVE-2023-1981 |
| Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> |
| --- |
| avahi-daemon/dbus-protocol.c | 20 ++++++++++++++------ |
| 1 file changed, 14 insertions(+), 6 deletions(-) |
| |
| diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c |
| index 70d7687bc..406d0b441 100644 |
| --- a/avahi-daemon/dbus-protocol.c |
| +++ b/avahi-daemon/dbus-protocol.c |
| @@ -375,10 +375,14 @@ static DBusHandlerResult dbus_get_alternative_host_name(DBusConnection *c, DBusM |
| } |
| |
| t = avahi_alternative_host_name(n); |
| - avahi_dbus_respond_string(c, m, t); |
| - avahi_free(t); |
| + if (t) { |
| + avahi_dbus_respond_string(c, m, t); |
| + avahi_free(t); |
| |
| - return DBUS_HANDLER_RESULT_HANDLED; |
| + 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_alternative_service_name(DBusConnection *c, DB |
| } |
| |
| t = avahi_alternative_service_name(n); |
| - avahi_dbus_respond_string(c, m, t); |
| - avahi_free(t); |
| + if (t) { |
| + avahi_dbus_respond_string(c, m, t); |
| + avahi_free(t); |
| |
| - return DBUS_HANDLER_RESULT_HANDLED; |
| + 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) { |