From 734de3bef82ff5456b27cca663f9e91e939f0c29 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Mon, 9 Aug 2021 10:06:25 +0100 Subject: [PATCH] dnsapi: Return ERROR_MORE_DATA on insufficient buffer. This was already done correctly in the res_getservers() case. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/dnsapi/libresolv.c | 2 +- dlls/dnsapi/tests/query.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/dnsapi/libresolv.c b/dlls/dnsapi/libresolv.c index 7e545cf36fb..864c517333d 100644 --- a/dlls/dnsapi/libresolv.c +++ b/dlls/dnsapi/libresolv.c @@ -414,7 +414,7 @@ DNS_STATUS CDECL resolv_get_serverlist( USHORT family, DNS_ADDR_ARRAY *addrs, DW if (!addrs || *len < needed) { *len = needed; - return !addrs ? ERROR_SUCCESS : ERROR_INSUFFICIENT_BUFFER; + return !addrs ? ERROR_SUCCESS : ERROR_MORE_DATA; } *len = needed; memset( addrs, 0, needed ); diff --git a/dlls/dnsapi/tests/query.c b/dlls/dnsapi/tests/query.c index 5fb47d89782..e691822a46a 100644 --- a/dlls/dnsapi/tests/query.c +++ b/dlls/dnsapi/tests/query.c @@ -155,6 +155,10 @@ static void test_DnsQueryConfig( void ) err = DnsQueryConfig( DnsConfigDnsServersIpv4, 0, name, NULL, NULL, &size ); if (err) continue; ipv4 = malloc( size ); + size--; + err = DnsQueryConfig( DnsConfigDnsServersIpv4, 0, name, NULL, ipv4, &size ); + ok( err == ERROR_MORE_DATA, "got %d\n", err ); + size++; err = DnsQueryConfig( DnsConfigDnsServersIpv4, 0, name, NULL, ipv4, &size ); ok( !err, "got %d\n", err );