git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'exim-4.96+security' into master+security
[exim.git]
/
src
/
src
/
lookups
/
dnsdb.c
diff --git
a/src/src/lookups/dnsdb.c
b/src/src/lookups/dnsdb.c
index 020dc9a526ad87c68049402dbc9ad70e45ae2a36..35a9464470e983a7e71de5a4e87c4a63cc45b0ae 100644
(file)
--- a/
src/src/lookups/dnsdb.c
+++ b/
src/src/lookups/dnsdb.c
@@
-5,6
+5,7
@@
/* Copyright (c) The Exim Maintainers 2020 - 2022 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* See the file NOTICE for conditions of use and distribution. */
/* Copyright (c) The Exim Maintainers 2020 - 2022 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include "../exim.h"
#include "lf_functions.h"
#include "../exim.h"
#include "lf_functions.h"
@@
-135,15
+136,12
@@
dnsdb_find(void * handle, const uschar * filename, const uschar * keystring,
{
int rc;
int sep = 0;
{
int rc;
int sep = 0;
-int defer_mode = PASS;
-int dnssec_mode = PASS;
-int save_retrans = dns_retrans;
-int save_retry = dns_retry;
+int defer_mode = PASS, dnssec_mode = PASS;
+int save_retrans = dns_retrans, save_retry = dns_retry;
int type;
int failrc = FAIL;
int type;
int failrc = FAIL;
-const uschar *outsep = CUS"\n";
-const uschar *outsep2 = NULL;
-uschar *equals, *domain, *found;
+const uschar * outsep = CUS"\n", * outsep2 = NULL;
+uschar * equals, * domain, * found;
dns_answer * dnsa = store_get_dns_answer();
dns_scan dnss;
dns_answer * dnsa = store_get_dns_answer();
dns_scan dnss;
@@
-384,10
+382,7
@@
while ((domain = string_nextinlist(&keystring, &sep, NULL, 0)))
if (type == T_A || type == T_AAAA || type == T_ADDRESSES)
{
for (dns_address * da = dns_address_from_rr(dnsa, rr); da; da = da->next)
if (type == T_A || type == T_AAAA || type == T_ADDRESSES)
{
for (dns_address * da = dns_address_from_rr(dnsa, rr); da; da = da->next)
- {
- if (yield->ptr) yield = string_catn(yield, outsep, 1);
- yield = string_cat(yield, da->address);
- }
+ yield = string_append_listele(yield, *outsep, da->address);
continue;
}
continue;
}
@@
-406,10
+401,7
@@
while ((domain = string_nextinlist(&keystring, &sep, NULL, 0)))
yield = string_catn(yield, US (rr->data+1), n);
}
else
yield = string_catn(yield, US (rr->data+1), n);
}
else
- {
- /* output all items */
- int data_offset = 0;
- while (data_offset < rr->size)
+ for (unsigned data_offset = 0; data_offset < rr->size; )
{
uschar chunk_len = (rr->data)[data_offset];
int remain = rr->size - data_offset;
{
uschar chunk_len = (rr->data)[data_offset];
int remain = rr->size - data_offset;
@@
-426,7
+418,6
@@
while ((domain = string_nextinlist(&keystring, &sep, NULL, 0)))
yield = string_catn(yield, US ((rr->data) + ++data_offset), --chunk_len);
data_offset += chunk_len;
}
yield = string_catn(yield, US ((rr->data) + ++data_offset), --chunk_len);
data_offset += chunk_len;
}
- }
}
else if (type == T_TLSA)
if (rr->size < 3)
}
else if (type == T_TLSA)
if (rr->size < 3)