From d1405ec1857b8c03c6a96bf1b6ba14fc4f2c16a7 Mon Sep 17 00:00:00 2001 From: Simon Lin Date: Wed, 10 Nov 2021 00:11:30 +0800 Subject: [PATCH] [dnssd-server] fix TXT RR format when TXT length is zero (#7141) --- src/core/net/dnssd_server.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/net/dnssd_server.cpp b/src/core/net/dnssd_server.cpp index c3ac14d1f..7e6ba2a5d 100644 --- a/src/core/net/dnssd_server.cpp +++ b/src/core/net/dnssd_server.cpp @@ -488,17 +488,25 @@ Error Server::AppendTxtRecord(Message & aMessage, uint32_t aTtl, NameCompressInfo &aCompressInfo) { - Error error = kErrorNone; - TxtRecord txtRecord; + Error error = kErrorNone; + TxtRecord txtRecord; + const uint8_t kEmptyTxt = 0; SuccessOrExit(error = AppendInstanceName(aMessage, aInstanceName, aCompressInfo)); txtRecord.Init(); txtRecord.SetTtl(aTtl); - txtRecord.SetLength(aTxtLength); + txtRecord.SetLength(aTxtLength > 0 ? aTxtLength : sizeof(kEmptyTxt)); SuccessOrExit(error = aMessage.Append(txtRecord)); - error = aMessage.AppendBytes(aTxtData, aTxtLength); + if (aTxtLength > 0) + { + error = aMessage.AppendBytes(aTxtData, aTxtLength); + } + else + { + error = aMessage.Append(kEmptyTxt); + } exit: return error;