Module: wine Branch: master Commit: a36e0a16cd6f4329beec1d2fa83428575269540f URL: https://gitlab.winehq.org/wine/wine/-/commit/a36e0a16cd6f4329beec1d2fa834285...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Thu Jun 1 14:32:55 2023 +0300
dnsapi: Accept name records of exact size at the end of the packet.
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru
---
dlls/dnsapi/record.c | 2 +- dlls/dnsapi/tests/record.c | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c index 01786842b73..cfd55a44852 100644 --- a/dlls/dnsapi/record.c +++ b/dlls/dnsapi/record.c @@ -199,7 +199,7 @@ static const BYTE *get_name( const BYTE *base, const BYTE *end, const BYTE *ptr, return NULL; } } - if (ptr >= end) return NULL; + if (ptr > end) return NULL; if (out == name) *out++ = '.'; *out = 0; return next ? next : ptr; diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c index 8abcdadaacc..340d10f6024 100644 --- a/dlls/dnsapi/tests/record.c +++ b/dlls/dnsapi/tests/record.c @@ -224,11 +224,8 @@ static void test_DnsExtractRecordsFromMessage(void)
rec = NULL; ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_full_srv, sizeof(msg_full_srv), &rec ); - todo_wine ok( !ret, "failed %ld\n", ret ); - todo_wine ok( rec != NULL, "record not set\n" ); - if (!rec) goto next; ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName ); ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section ); ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet ); @@ -240,7 +237,6 @@ static void test_DnsExtractRecordsFromMessage(void) ok( !rec->pNext, "next record %p\n", rec->pNext ); DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
-next: rec = (void *)0xdeadbeef; ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_question_srv, sizeof(msg_question_srv), &rec ); ok( !ret, "failed %ld\n", ret ); @@ -248,11 +244,8 @@ next:
rec = NULL; ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_answer_srv, sizeof(msg_answer_srv), &rec ); - todo_wine ok( !ret, "failed %ld\n", ret ); - todo_wine ok( rec != NULL, "record not set\n" ); - if (!rec) goto next2; ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName ); ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section ); ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet ); @@ -264,7 +257,6 @@ next: ok( !rec->pNext, "next record %p\n", rec->pNext ); DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
-next2: ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_empty, sizeof(msg_empty) - 1, &rec ); ok( ret == ERROR_INVALID_PARAMETER || broken(ret == DNS_ERROR_BAD_PACKET) /* win7 */, "failed %ld\n", ret );