1*169d7bccSPatrick WilliamsFrom c6cab87df290448a63323c8ca759baa516166237 Mon Sep 17 00:00:00 2001 2*169d7bccSPatrick WilliamsFrom: Evgeny Vereshchagin <evvers@ya.ru> 3*169d7bccSPatrick WilliamsDate: Wed, 25 Oct 2023 18:15:42 +0000 4*169d7bccSPatrick WilliamsSubject: [PATCH] tests: pass overly long TXT resource records 5*169d7bccSPatrick Williams 6*169d7bccSPatrick Williamsto make sure they don't crash avahi any more. 7*169d7bccSPatrick WilliamsIt reproduces https://github.com/lathiat/avahi/issues/455 8*169d7bccSPatrick Williams 9*169d7bccSPatrick WilliamsCanonical notes: 10*169d7bccSPatrick Williamsnickgalanis> removed first hunk since there is no .github dir in this release 11*169d7bccSPatrick Williams 12*169d7bccSPatrick WilliamsUpstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/avahi/tree/debian/patches/CVE-2023-38469-2.patch?h=ubuntu/jammy-security 13*169d7bccSPatrick WilliamsUpstream commit https://github.com/lathiat/avahi/commit/c6cab87df290448a63323c8ca759baa516166237] 14*169d7bccSPatrick WilliamsCVE: CVE-2023-38469 15*169d7bccSPatrick WilliamsSigned-off-by: Vijay Anusuri <vanusuri@mvista.com> 16*169d7bccSPatrick Williams--- 17*169d7bccSPatrick Williams avahi-client/client-test.c | 14 ++++++++++++++ 18*169d7bccSPatrick Williams 1 files changed, 14 insertions(+) 19*169d7bccSPatrick Williams 20*169d7bccSPatrick WilliamsIndex: avahi-0.8/avahi-client/client-test.c 21*169d7bccSPatrick Williams=================================================================== 22*169d7bccSPatrick Williams--- avahi-0.8.orig/avahi-client/client-test.c 23*169d7bccSPatrick Williams+++ avahi-0.8/avahi-client/client-test.c 24*169d7bccSPatrick Williams@@ -22,6 +22,7 @@ 25*169d7bccSPatrick Williams #endif 26*169d7bccSPatrick Williams 27*169d7bccSPatrick Williams #include <stdio.h> 28*169d7bccSPatrick Williams+#include <string.h> 29*169d7bccSPatrick Williams #include <assert.h> 30*169d7bccSPatrick Williams 31*169d7bccSPatrick Williams #include <avahi-client/client.h> 32*169d7bccSPatrick Williams@@ -33,6 +34,8 @@ 33*169d7bccSPatrick Williams #include <avahi-common/malloc.h> 34*169d7bccSPatrick Williams #include <avahi-common/timeval.h> 35*169d7bccSPatrick Williams 36*169d7bccSPatrick Williams+#include <avahi-core/dns.h> 37*169d7bccSPatrick Williams+ 38*169d7bccSPatrick Williams static const AvahiPoll *poll_api = NULL; 39*169d7bccSPatrick Williams static AvahiSimplePoll *simple_poll = NULL; 40*169d7bccSPatrick Williams 41*169d7bccSPatrick Williams@@ -222,6 +225,9 @@ int main (AVAHI_GCC_UNUSED int argc, AVA 42*169d7bccSPatrick Williams uint32_t cookie; 43*169d7bccSPatrick Williams struct timeval tv; 44*169d7bccSPatrick Williams AvahiAddress a; 45*169d7bccSPatrick Williams+ uint8_t rdata[AVAHI_DNS_RDATA_MAX+1]; 46*169d7bccSPatrick Williams+ AvahiStringList *txt = NULL; 47*169d7bccSPatrick Williams+ int r; 48*169d7bccSPatrick Williams 49*169d7bccSPatrick Williams simple_poll = avahi_simple_poll_new(); 50*169d7bccSPatrick Williams poll_api = avahi_simple_poll_get(simple_poll); 51*169d7bccSPatrick Williams@@ -258,6 +264,14 @@ int main (AVAHI_GCC_UNUSED int argc, AVA 52*169d7bccSPatrick Williams 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))); 53*169d7bccSPatrick Williams printf("add_record: %d\n", avahi_entry_group_add_record (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "TestX", 0x01, 0x10, 120, "\5booya", 6)); 54*169d7bccSPatrick Williams 55*169d7bccSPatrick Williams+ memset(rdata, 1, sizeof(rdata)); 56*169d7bccSPatrick Williams+ r = avahi_string_list_parse(rdata, sizeof(rdata), &txt); 57*169d7bccSPatrick Williams+ assert(r >= 0); 58*169d7bccSPatrick Williams+ assert(avahi_string_list_serialize(txt, NULL, 0) == sizeof(rdata)); 59*169d7bccSPatrick Williams+ error = avahi_entry_group_add_service_strlst(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "TestX", "_qotd._tcp", NULL, NULL, 123, txt); 60*169d7bccSPatrick Williams+ assert(error == AVAHI_ERR_INVALID_RECORD); 61*169d7bccSPatrick Williams+ avahi_string_list_free(txt); 62*169d7bccSPatrick Williams+ 63*169d7bccSPatrick Williams avahi_entry_group_commit (group); 64*169d7bccSPatrick Williams 65*169d7bccSPatrick Williams domain = avahi_domain_browser_new (avahi, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, NULL, AVAHI_DOMAIN_BROWSER_BROWSE, 0, avahi_domain_browser_callback, (char*) "omghai3u"); 66