On Mon, Nov 20, 2023 at 6:27 AM Vijay Anusuri <vanus...@mvista.com> wrote:
>
> Hi Ross and Steve,
>
> Please consider this patch for the Kirkstone branch.

I have them in my kirkstone test queue.

Thanks,

Steve

> As discussed again with Meenali, I will be sending patches to remaining 
> branches.
>
> Thanks & Regards,
> Vijay
>
> On Fri, Nov 17, 2023 at 10:13 PM Randy MacLeod <randy.macl...@windriver.com> 
> wrote:
>>
>> Add Hari who will inform WR developers on his team once the CVE 
>> co-ordination scheme is available.
>> Add Marta.
>>
>> On 2023-11-17 9:11 a.m., Meenali Gupta via lists.openembedded.org wrote:
>>
>> Hi Ross,
>>
>> As discussed with Vijay,  we'll cooperate on this CVE fixes.
>>
>> Marta,
>>
>>
>> Do you have a wiki page set-up?
>>
>>
>> I see:
>>
>>    https://wiki.yoctoproject.org/wiki/Synchronization_CVEs
>>
>> and it mentions, but does not point to, "A synchronization wiki page".
>>
>>
>>
>> ../Randy
>>
>>
>>
>> Regards
>> Meenali
>> ________________________________
>> From: Vijay Anusuri <vanus...@mvista.com>
>> Sent: 16 November 2023 21:31
>> To: jpuhl...@mvista.com <jpuhl...@mvista.com>; Ross Burton 
>> <ross.bur...@arm.com>; Gupta, Meenali <meenali.gu...@windriver.com>
>> Cc: openembedded-core@lists.openembedded.org 
>> <openembedded-core@lists.openembedded.org>
>> Subject: Re: [OE-core][kirkstone][PATCH] avahi: Fix for multiple CVE's
>>
>> CAUTION: This email comes from a non Wind River email account!
>> Do not click links or open attachments unless you recognize the sender and 
>> know the content is safe.
>> Hi Ross,
>>
>> As discussed with Meenali, I agreed she was going to do this work.
>> She has already submitted patches for multiple branches ( master, mickledore 
>> and kirkstone ).
>>
>> For CVE-2023-38469, we need to include 2 commits to fix the CVE. Meenali 
>> will send the v2 patch for CVE-2023-38469 which will include 2 patches for 
>> all the branches.
>>
>> Thank you Meenali for your timely response.
>>
>> Thanks & Regards,
>> Vijay
>>
>> On Thu, Nov 16, 2023 at 7:56 PM Jeremy Puhlman via lists.openembedded.org 
>> <jpuhlman=mvista....@lists.openembedded.org> wrote:
>>
>>
>>
>> On 11/16/2023 3:22 AM, Ross Burton wrote:
>> > Hi Vijay and Meenali,
>> >
>> > Hopefully this will show everyone - especially WR and Montavista - that we 
>> > need to communicate better when working on CVEs.  In the short term at 
>> > least, Marta proposed a wiki page which can be updated via a tool and when 
>> > someone is working on an issue that can be marked to avoid duplication of 
>> > effort.  Would that be acceptable to both of your companies?
>>
>> Yeah, I think something like that would be great on our end, provided
>> its automated and the data can be extracted, so it can be consolidated
>> in internal CVE tracking that we are currently required to.
>>
>> >
>> > I’ve not checked that the fixes are identical, but apparently I need to 
>> > remind everyone that we take fixes in *master first* and then backport to 
>> > the releases in order.
>> There should also be an agree upon change decoration to indicate
>> non-applicability/differently addressed in earlier releases.
>>
>> With 4 year LTS releases many issues are just not going to be applicable
>> to master. Also there may well be very good reasons to fix a given set
>> of CVEs in
>> completely different ways, but making sure they are addressed in both is
>> important. Setting aside this example, in almost all cases on master
>> moving to the fixed version, is almost always the right answer, where as
>> on say dunfell, moving to the new version may have too many knock on
>> effects to make sense.
>> In this instance, Khem has already indicated moving to the new release
>> may make sense for both kirkstone and master.
>>
>> >
>> > Luckily the avahi recipe is fairly untouched so this should be trivial.  
>> > Can you both discuss and agree who is going to do this?
>> Vijay can you work with Meenali to consolidate this patch.
>> >
>> > Ross
>> >
>> >> On 16 Nov 2023, at 04:05, Vijay Anusuri via lists.openembedded.org 
>> >> <vanusuri=mvista....@lists.openembedded.org> wrote:
>> >>
>> >> From: Vijay Anusuri <vanus...@mvista.com>
>> >>
>> >> Patches to fix:
>> >> CVE-2023-38469
>> >> CVE-2023-38470
>> >> CVE-2023-38471
>> >> CVE-2023-38472
>> >> CVE-2023-38473
>> >>
>> >> Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/a337a1ba7d15853fb56deef1f464529af6e3a1cf
>> >> &
>> >> https://github.com/lathiat/avahi/commit/c6cab87df290448a63323c8ca759baa516166237
>> >> &
>> >> https://github.com/lathiat/avahi/commit/94cb6489114636940ac683515417990b55b5d66c
>> >> &
>> >> https://github.com/lathiat/avahi/commit/894f085f402e023a98cbb6f5a3d117bd88d93b09
>> >> &
>> >> https://github.com/lathiat/avahi/commit/b024ae5749f4aeba03478e6391687c3c9c8dee40
>> >> &
>> >> https://github.com/lathiat/avahi/commit/b448c9f771bada14ae8de175695a9729f8646797]
>> >>
>> >> Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> ---
>> >> meta/recipes-connectivity/avahi/avahi_0.8.bb  |   6 +
>> >> .../avahi/files/CVE-2023-38469-1.patch        |  47 ++++++++
>> >> .../avahi/files/CVE-2023-38469-2.patch        |  65 +++++++++++
>> >> .../avahi/files/CVE-2023-38470.patch          |  56 +++++++++
>> >> .../avahi/files/CVE-2023-38471.patch          |  72 ++++++++++++
>> >> .../avahi/files/CVE-2023-38472.patch          |  47 ++++++++
>> >> .../avahi/files/CVE-2023-38473.patch          | 108 ++++++++++++++++++
>> >> 7 files changed, 401 insertions(+)
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38469-1.patch
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38469-2.patch
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38470.patch
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38471.patch
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38472.patch
>> >> create mode 100644 
>> >> meta/recipes-connectivity/avahi/files/CVE-2023-38473.patch
>> >>
>> >> diff --git a/meta/recipes-connectivity/avahi/avahi_0.8.bb 
>> >> b/meta/recipes-connectivity/avahi/avahi_0.8.bb
>> >> index b5c966c102..772fb43939 100644
>> >> --- a/meta/recipes-connectivity/avahi/avahi_0.8.bb
>> >> +++ b/meta/recipes-connectivity/avahi/avahi_0.8.bb
>> >> @@ -26,6 +26,12 @@ SRC_URI = 
>> >> "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}
>> >>             file://0001-Fix-opening-etc-resolv.conf-error.patch \
>> >>             file://handle-hup.patch \
>> >>             file://local-ping.patch \
>> >> +           file://CVE-2023-38469-1.patch \
>> >> +           file://CVE-2023-38469-2.patch \
>> >> +           file://CVE-2023-38470.patch \
>> >> +           file://CVE-2023-38471.patch \
>> >> +           file://CVE-2023-38472.patch \
>> >> +           file://CVE-2023-38473.patch \
>> >>             "
>> >>
>> >> UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/";
>> >> diff --git a/meta/recipes-connectivity/avahi/files/CVE-2023-38469-1.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38469-1.patch
>> >> new file mode 100644
>> >> index 0000000000..99c717daf3
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38469-1.patch
>> >> @@ -0,0 +1,47 @@
>> >> +From a337a1ba7d15853fb56deef1f464529af6e3a1cf Mon Sep 17 00:00:00 2001
>> >> +From: Evgeny Vereshchagin <evv...@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
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/a337a1ba7d15853fb56deef1f464529af6e3a1cf]
>> >> +CVE: CVE-2023-38469
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-core/rr.c | 9 ++++++++-
>> >> + 1 file changed, 8 insertions(+), 1 deletion(-)
>> >> +
>> >> +diff --git a/avahi-core/rr.c b/avahi-core/rr.c
>> >> +index 2bb89244..9c04ebbd 100644
>> >> +--- 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"
>> >> +@@ -689,11 +690,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/meta/recipes-connectivity/avahi/files/CVE-2023-38469-2.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38469-2.patch
>> >> new file mode 100644
>> >> index 0000000000..b83a70e29b
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38469-2.patch
>> >> @@ -0,0 +1,65 @@
>> >> +From c6cab87df290448a63323c8ca759baa516166237 Mon Sep 17 00:00:00 2001
>> >> +From: Evgeny Vereshchagin <evv...@ya.ru>
>> >> +Date: Wed, 25 Oct 2023 18:15:42 +0000
>> >> +Subject: [PATCH] tests: pass overly long TXT resource records
>> >> +
>> >> +to make sure they don't crash avahi any more.
>> >> +
>> >> +It reproduces https://github.com/lathiat/avahi/issues/455
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/c6cab87df290448a63323c8ca759baa516166237]
>> >> +CVE: CVE-2023-38469
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-client/client-test.c | 14 ++++++++++++++
>> >> + 1 file changed, 14 insertions(+)
>> >> +
>> >> +diff --git a/avahi-client/client-test.c b/avahi-client/client-test.c
>> >> +index 7d04a6a..66e3574 100644
>> >> +--- a/avahi-client/client-test.c
>> >> ++++ b/avahi-client/client-test.c
>> >> +@@ -22,6 +22,7 @@
>> >> + #endif
>> >> +
>> >> + #include <stdio.h>
>> >> ++#include <string.h>
>> >> + #include <assert.h>
>> >> +
>> >> + #include <avahi-client/client.h>
>> >> +@@ -33,6 +34,8 @@
>> >> + #include <avahi-common/malloc.h>
>> >> + #include <avahi-common/timeval.h>
>> >> +
>> >> ++#include <avahi-core/dns.h>
>> >> ++
>> >> + static const AvahiPoll *poll_api = NULL;
>> >> + static AvahiSimplePoll *simple_poll = NULL;
>> >> +
>> >> +@@ -222,6 +225,9 @@ int main (AVAHI_GCC_UNUSED int argc, 
>> >> AVAHI_GCC_UNUSED char *argv[]) {
>> >> +     uint32_t cookie;
>> >> +     struct timeval tv;
>> >> +     AvahiAddress a;
>> >> ++    uint8_t rdata[AVAHI_DNS_RDATA_MAX+1];
>> >> ++    AvahiStringList *txt = NULL;
>> >> ++    int r;
>> >> +
>> >> +     simple_poll = avahi_simple_poll_new();
>> >> +     poll_api = avahi_simple_poll_get(simple_poll);
>> >> +@@ -258,6 +264,14 @@ int main (AVAHI_GCC_UNUSED int argc, 
>> >> AVAHI_GCC_UNUSED char *argv[]) {
>> >> +     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));
>> >> +
>> >> ++    memset(rdata, 1, sizeof(rdata));
>> >> ++    r = avahi_string_list_parse(rdata, sizeof(rdata), &txt);
>> >> ++    assert(r >= 0);
>> >> ++    assert(avahi_string_list_serialize(txt, NULL, 0) == sizeof(rdata));
>> >> ++    error = avahi_entry_group_add_service_strlst(group, 
>> >> AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, "TestX", "_qotd._tcp", NULL, 
>> >> NULL, 123, txt);
>> >> ++    assert(error == AVAHI_ERR_INVALID_RECORD);
>> >> ++    avahi_string_list_free(txt);
>> >> ++
>> >> +     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");
>> >> +--
>> >> +2.25.1
>> >> +
>> >> diff --git a/meta/recipes-connectivity/avahi/files/CVE-2023-38470.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38470.patch
>> >> new file mode 100644
>> >> index 0000000000..1cbb00dcab
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38470.patch
>> >> @@ -0,0 +1,56 @@
>> >> +From 94cb6489114636940ac683515417990b55b5d66c Mon Sep 17 00:00:00 2001
>> >> +From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemen...@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.
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/94cb6489114636940ac683515417990b55b5d66c]
>> >> +CVE: CVE-2023-38470
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-common/domain-test.c | 14 ++++++++++++++
>> >> + avahi-common/domain.c      |  2 +-
>> >> + 2 files changed, 15 insertions(+), 1 deletion(-)
>> >> +
>> >> +diff --git a/avahi-common/domain-test.c b/avahi-common/domain-test.c
>> >> +index cf763eca6..3acc1c1e4 100644
>> >> +--- a/avahi-common/domain-test.c
>> >> ++++ b/avahi-common/domain-test.c
>> >> +@@ -45,6 +45,20 @@ int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED 
>> >> char *argv[]) {
>> >> +     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"));
>> >> +
>> >> +diff --git a/avahi-common/domain.c b/avahi-common/domain.c
>> >> +index 3b1ab6834..e66d2416c 100644
>> >> +--- a/avahi-common/domain.c
>> >> ++++ b/avahi-common/domain.c
>> >> +@@ -201,7 +201,7 @@ char *avahi_normalize_name(const char *s, char 
>> >> *ret_s, size_t size) {
>> >> +         }
>> >> +
>> >> +         if (!empty) {
>> >> +-            if (size < 1)
>> >> ++            if (size < 2)
>> >> +                 return NULL;
>> >> +
>> >> +             *(r++) = '.';
>> >> diff --git a/meta/recipes-connectivity/avahi/files/CVE-2023-38471.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38471.patch
>> >> new file mode 100644
>> >> index 0000000000..8242646da1
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38471.patch
>> >> @@ -0,0 +1,72 @@
>> >> +From 894f085f402e023a98cbb6f5a3d117bd88d93b09 Mon Sep 17 00:00:00 2001
>> >> +From: Michal Sekletar <msekl...@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
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/894f085f402e023a98cbb6f5a3d117bd88d93b09]
>> >> +CVE: CVE-2023-38471
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-core/server.c | 27 +++++++++++++++++++++------
>> >> + 1 file changed, 21 insertions(+), 6 deletions(-)
>> >> +
>> >> +diff --git a/avahi-core/server.c b/avahi-core/server.c
>> >> +index c32637af8..f6a21bb77 100644
>> >> +--- 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(AvahiServer *s, 
>> >> const char *host_name) {
>> >> +     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);
>> >> ++
>> >> ++    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, hn) && s->state != 
>> >> AVAHI_SERVER_COLLISION) {
>> >> +-        avahi_free(hn);
>> >> ++    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/meta/recipes-connectivity/avahi/files/CVE-2023-38472.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38472.patch
>> >> new file mode 100644
>> >> index 0000000000..43b26c1132
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38472.patch
>> >> @@ -0,0 +1,47 @@
>> >> +From b024ae5749f4aeba03478e6391687c3c9c8dee40 Mon Sep 17 00:00:00 2001
>> >> +From: Michal Sekletar <msekl...@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
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/b024ae5749f4aeba03478e6391687c3c9c8dee40]
>> >> +CVE: CVE-2023-38472
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-client/client-test.c      | 3 +++
>> >> + avahi-daemon/dbus-entry-group.c | 2 +-
>> >> + 2 files changed, 4 insertions(+), 1 deletion(-)
>> >> +
>> >> +diff --git a/avahi-client/client-test.c b/avahi-client/client-test.c
>> >> +index 66e3574..9a015d7 100644
>> >> +--- a/avahi-client/client-test.c
>> >> ++++ b/avahi-client/client-test.c
>> >> +@@ -272,6 +272,9 @@ int main (AVAHI_GCC_UNUSED int argc, 
>> >> AVAHI_GCC_UNUSED char *argv[]) {
>> >> +     assert(error == AVAHI_ERR_INVALID_RECORD);
>> >> +     avahi_string_list_free(txt);
>> >> +
>> >> ++    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");
>> >> +diff --git a/avahi-daemon/dbus-entry-group.c 
>> >> b/avahi-daemon/dbus-entry-group.c
>> >> +index 4e879a5..aa23d4b 100644
>> >> +--- a/avahi-daemon/dbus-entry-group.c
>> >> ++++ b/avahi-daemon/dbus-entry-group.c
>> >> +@@ -340,7 +340,7 @@ DBusHandlerResult 
>> >> avahi_dbus_msg_entry_group_impl(DBusConnection *c, DBusMessage
>> >> +         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);
>> >> +         }
>> >> +--
>> >> +2.25.1
>> >> +
>> >> diff --git a/meta/recipes-connectivity/avahi/files/CVE-2023-38473.patch 
>> >> b/meta/recipes-connectivity/avahi/files/CVE-2023-38473.patch
>> >> new file mode 100644
>> >> index 0000000000..7b33d564f8
>> >> --- /dev/null
>> >> +++ b/meta/recipes-connectivity/avahi/files/CVE-2023-38473.patch
>> >> @@ -0,0 +1,108 @@
>> >> +From b448c9f771bada14ae8de175695a9729f8646797 Mon Sep 17 00:00:00 2001
>> >> +From: Michal Sekletar <msekl...@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
>> >> +
>> >> +Upstream-Status: Backport 
>> >> [https://github.com/lathiat/avahi/commit/b448c9f771bada14ae8de175695a9729f8646797]
>> >> +CVE: CVE-2023-38473
>> >> +Signed-off-by: Vijay Anusuri <vanus...@mvista.com>
>> >> +---
>> >> + avahi-common/alternative-test.c |  3 +++
>> >> + avahi-common/alternative.c      | 27 +++++++++++++++++++--------
>> >> + 2 files changed, 22 insertions(+), 8 deletions(-)
>> >> +
>> >> +diff --git a/avahi-common/alternative-test.c 
>> >> b/avahi-common/alternative-test.c
>> >> +index 9255435ec..681fc15b8 100644
>> >> +--- a/avahi-common/alternative-test.c
>> >> ++++ b/avahi-common/alternative-test.c
>> >> +@@ -31,6 +31,9 @@ int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED 
>> >> char *argv[]) {
>> >> +     const char* const test_strings[] = {
>> >> +         
>> >> "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
>> >> +         "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXüüüüüüü",
>> >> ++        ").",
>> >> ++        "\\.",
>> >> ++        
>> >> "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\",
>> >> +         "gurke",
>> >> +         "-",
>> >> +         " #",
>> >> +diff --git a/avahi-common/alternative.c b/avahi-common/alternative.c
>> >> +index b3d39f0ed..a094e6d76 100644
>> >> +--- 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 char *s) {
>> >> +
>> >> +     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 char *s) {
>> >> +     } 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 char *s) {
>> >> +         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;
>> >> --
>> >> 2.25.1
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>> >
>>
>> --
>> Jeremy Puhlman
>> jpuhl...@mvista.com
>>
>>
>>
>>
>>
>> 
>>
>>
>> --
>> # Randy MacLeod
>> # Wind River Linux
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#190924): 
https://lists.openembedded.org/g/openembedded-core/message/190924
Mute This Topic: https://lists.openembedded.org/mt/102621335/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to