xref: /openbmc/openbmc/poky/meta/recipes-connectivity/avahi/files/CVE-2023-38469-2.patch (revision 169d7bccc02da43f8574d030502cfcf9308f505f)
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