Increase buffer size used for DNS responses. Bug 2329
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 12 Oct 2018 19:07:44 +0000 (20:07 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 12 Oct 2018 19:09:01 +0000 (20:09 +0100)
doc/doc-txt/ChangeLog
src/exim_monitor/em_hdr.h
src/src/dns.c
src/src/exim.h
src/src/structs.h
test/stderr/0020

index 6f16fed8234c5aa507b50991180a4ae58579f488..b4aae226f18159861598252ebc6f80dd9ddf4543 100644 (file)
@@ -137,6 +137,11 @@ JH/28 Bug 2314: Fire msg:fail:delivery event even when error is being ignored.
 JH/29 Bug 2322: A "fail" command in a non-system filter (file) now fires the
       msg:fail:internal event.  Developement by Matthias Kurz.
 
+JH/30 Bug 2329: Increase buffer size used for dns lookup from 2k, which was
+      far too smal for todays use of crypto signatures stored there.  Go all
+      the way to the max DNS message size of 64kB, even though this might be
+      overmuch for IOT constrained device use.
+
 
 Exim version 4.91
 -----------------
index 67294368a65812056cc50a7df2971ff4f9f5a589..ada9f36b415aab4f938a41b1dd45847fb0289eb0 100644 (file)
@@ -87,11 +87,12 @@ anything. */
 
 #include <pcre.h>
 
-/* Includes from the main source of Exim. We need to have MAXPACKET defined for
-the benefit of structs.h. One of these days I should tidy up this interface so
-that this kind of kludge isn't needed. */
+/* Includes from the main source of Exim.  One of these days I should tidy up
+this interface so that this kind of kludge isn't needed. */
 
-#define MAXPACKET 1024
+#ifndef NS_MAXMSG
+# define NS_MAXMSG 65535
+#endif
 typedef void hctx;
 
 #include "config.h"
index 297b8b88da7f253be56807459cb5d9e38c4c14e2..0f0b435de288b9f7ca8bad0421086387f88daafc 100644 (file)
@@ -639,6 +639,10 @@ up nameservers that produce this error continually, so there is the option of
 providing a list of domains for which this is treated as a non-existent
 host.
 
+The dns_answer structure is pretty big; enough to hold a max-sized DNS message
+- so best allocated from fast-release memory.  As of writing, all our callers
+use a stack-auto variable.
+
 Arguments:
   dnsa      pointer to dns_answer structure
   name      name to look up
@@ -1101,7 +1105,7 @@ switch (type)
          && (h->rcode == NOERROR || h->rcode == NXDOMAIN)
          && ntohs(h->qdcount) == 1 && ntohs(h->ancount) == 0
          && ntohs(h->nscount) >= 1)
-           dnsa->answerlen = MAXPACKET;
+           dnsa->answerlen = sizeof(dnsa->answer);
 
       for (rr = dns_next_rr(dnsa, &dnss, RESET_AUTHORITY);
           rr; rr = dns_next_rr(dnsa, &dnss, RESET_NEXT)
index 0de0595b1487d2d4e360f2050fb1a9d844ba846e..ca6221ffd5dbfeb89e130713ceb7975dfa282a74 100644 (file)
@@ -284,18 +284,6 @@ disabused of the notion. Luckily, since EX_OK is not used, it didn't matter.] */
 #include <arpa/nameser.h>
 
 
-/* If arpa/nameser.h defines a maximum name server packet size, use it,
-provided it is greater than 2048. Otherwise go for a default. PACKETSZ was used
-for this, but it seems that NS_PACKETSZ is coming into use. */
-
-#if defined(NS_PACKETSZ) && NS_PACKETSZ >= 2048
-  #define MAXPACKET NS_PACKETSZ
-#elif defined(PACKETSZ) && PACKETSZ >= 2048
-  #define MAXPACKET PACKETSZ
-#else
-  #define MAXPACKET 2048
-#endif
-
 /* While IPv6 is still young the definitions of T_AAAA and T_A6 may not be
 included in arpa/nameser.h. Fudge them here. */
 
index 1ac455ca5789624568e70173a379c2d3ef6a8cc7..48f475a8928d549252b733d097885025a39445ca 100644 (file)
@@ -743,11 +743,12 @@ typedef struct {
   const uschar *data;                   /* pointer to data */
 } dns_record;
 
-/* Structure for holding the result of a DNS query. */
+/* Structure for holding the result of a DNS query.  A touch over
+64k big, so take care to release as soon as possible. */
 
 typedef struct {
   int     answerlen;              /* length of the answer */
-  uschar  answer[MAXPACKET];      /* the answer itself */
+  uschar  answer[NS_MAXMSG];      /* the answer itself */
 } dns_answer;
 
 /* Structure for holding the intermediate data while scanning a DNS answer
index dc674fc69c9a32a928dd09684d5107a90b9e8f3d..7578b74c8c82cd62f54b9d2bcd236097ae92297b 100644 (file)
 >>> looking up host name for 10.250.104.42
 >>> IP address lookup yielded "manyhome.test.ex"
 >>> checking addresses for manyhome.test.ex
+>>>   10.250.107.163
+>>>   10.250.109.49
+>>>   10.250.105.65
+>>>   10.250.105.225
+>>>   10.250.106.7
+>>>   10.250.107.0
+>>>   10.250.109.30
+>>>   10.250.110.11
+>>>   10.250.110.80
+>>>   10.250.111.143
+>>>   10.250.105.194
+>>>   10.250.106.43
+>>>   10.250.107.128
+>>>   10.250.107.199
+>>>   10.250.109.68
+>>>   10.250.110.153
+>>>   10.250.106.3
+>>>   10.250.107.91
+>>>   10.250.107.146
+>>>   10.250.108.234
+>>>   10.250.109.222
+>>>   10.250.111.36
+>>>   10.250.111.178
+>>>   10.250.105.97
+>>>   10.250.107.28
+>>>   10.250.107.41
+>>>   10.250.107.59
+>>>   10.250.107.63
+>>>   10.250.108.54
+>>>   10.250.109.34
+>>>   10.250.110.124
+>>>   10.250.105.0
+>>>   10.250.106.15
+>>>   10.250.107.207
+>>>   10.250.107.239
+>>>   10.250.110.166
+>>>   10.250.111.34
+>>>   10.250.109.196
+>>>   10.250.111.7
+>>>   10.250.111.33
+>>>   10.250.110.31
+>>>   10.250.110.40
+>>>   10.250.111.87
+>>>   10.250.111.179
+>>>   10.250.105.178
+>>>   10.250.108.171
+>>>   10.250.106.148
+>>>   10.250.106.221
+>>>   10.250.109.46
+>>>   10.250.109.144
+>>>   10.250.104.144
+>>>   10.250.104.72
+>>>   10.250.105.133
+>>>   10.250.105.214
+>>>   10.250.107.223
+>>>   10.250.108.205
+>>>   10.250.109.91
+>>>   10.250.105.228
+>>>   10.250.106.20
+>>>   10.250.106.198
+>>>   10.250.108.161
+>>>   10.250.108.184
+>>>   10.250.109.183
+>>>   10.250.110.189
+>>>   10.250.104.179
+>>>   10.250.105.111
+>>>   10.250.105.164
+>>>   10.250.108.39
+>>>   10.250.107.198
+>>>   10.250.109.137
+>>>   10.250.108.142
+>>>   10.250.110.192
+>>>   10.250.110.226
+>>>   10.250.111.226
+>>>   10.250.105.26
+>>>   10.250.106.92
+>>>   10.250.109.7
+>>>   10.250.109.207
+>>>   10.250.111.167
+>>>   10.250.106.171
+>>>   10.250.106.203
+>>>   10.250.110.8
+>>>   10.250.110.249
+>>>   10.250.110.151
+>>>   10.250.105.58
+>>>   10.250.109.8
+>>>   10.250.109.170
+>>>   10.250.104.63
+>>>   10.250.106.184
+>>>   10.250.107.49
+>>>   10.250.107.79
+>>>   10.250.109.40
+>>>   10.250.109.254
+>>>   10.250.111.203
+>>>   10.250.107.186
+>>>   10.250.110.24
+>>>   10.250.104.119
+>>>   10.250.106.242
+>>>   10.250.105.76
+>>>   10.250.106.206
+>>>   10.250.108.187
+>>>   10.250.110.179
+>>>   10.250.105.18
+>>>   10.250.106.91
+>>>   10.250.108.226
+>>>   10.250.111.247
 >>>   10.250.104.51
+>>>   10.250.104.164
+>>>   10.250.104.247
+>>>   10.250.105.47
+>>>   10.250.105.155
+>>>   10.250.104.75
+>>>   10.250.111.128
+>>>   10.250.104.73
+>>>   10.250.105.69
+>>>   10.250.108.57
+>>>   10.250.109.214
+>>>   10.250.104.149
+>>>   10.250.104.170
+>>>   10.250.105.84
+>>>   10.250.107.149
+>>>   10.250.110.167
+>>>   10.250.110.238
 >>>   10.250.104.17
+>>>   10.250.104.212
+>>>   10.250.107.179
+>>>   10.250.107.215
+>>>   10.250.109.192
+>>>   10.250.109.202
+>>>   10.250.111.243
+>>>   10.250.105.116
+>>>   10.250.111.93
+>>>   10.250.105.162
+>>>   10.250.108.1
+>>>   10.250.108.27
+>>>   10.250.111.81
+>>>   10.250.111.122
+>>>   10.250.106.56
+>>>   10.250.106.106
+>>>   10.250.107.69
+>>>   10.250.108.148
+>>>   10.250.109.217
+>>>   10.250.111.164
+>>>   10.250.111.180
+>>>   10.250.104.155
+>>>   10.250.107.74
+>>>   10.250.108.252
+>>>   10.250.110.198
+>>>   10.250.111.159
+>>>   10.250.104.198
+>>>   10.250.105.38
+>>>   10.250.107.8
+>>>   10.250.107.122
+>>>   10.250.109.111
 >>>   10.250.104.2
+>>>   10.250.105.213
+>>>   10.250.106.36
+>>>   10.250.107.25
+>>>   10.250.110.175
+>>>   10.250.107.80
+>>>   10.250.108.137
+>>>   10.250.110.6
+>>>   10.250.110.119
+>>>   10.250.105.43
+>>>   10.250.105.171
+>>>   10.250.108.14
+>>>   10.250.105.120
+>>>   10.250.111.186
+>>>   10.250.111.215
+>>>   10.250.105.208
+>>>   10.250.108.240
+>>>   10.250.111.17
+>>>   10.250.104.116
+>>>   10.250.108.55
+>>>   10.250.105.174
+>>>   10.250.107.45
+>>>   10.250.109.134
+>>>   10.250.109.152
+>>>   10.250.110.174
+>>>   10.250.111.37
+>>>   10.250.104.210
+>>>   10.250.104.239
+>>>   10.250.104.255
+>>>   10.250.105.85
+>>>   10.250.109.200
+>>>   10.250.111.145
+>>>   10.250.108.135
+>>>   10.250.109.199
+>>>   10.250.104.196
+>>>   10.250.105.67
+>>>   10.250.105.102
+>>>   10.250.107.89
+>>>   10.250.109.77
+>>>   10.250.109.232
+>>>   10.250.110.3
+>>>   10.250.110.41
+>>>   10.250.108.13
+>>>   10.250.108.131
+>>>   10.250.109.154
+>>>   10.250.111.146
+>>>   10.250.105.7
+>>>   10.250.109.0
+>>>   10.250.111.249
+>>>   10.250.105.14
+>>>   10.250.106.235
+>>>   10.250.107.111
+>>>   10.250.109.161
+>>>   10.250.104.97
+>>>   10.250.104.113
+>>>   10.250.105.204
+>>>   10.250.106.250
+>>>   10.250.109.205
+>>>   10.250.110.65
+>>>   10.250.111.40
 >>>   10.250.104.26
+>>>   10.250.104.125
+>>>   10.250.105.103
+>>>   10.250.106.100
+>>>   10.250.107.195
+>>>   10.250.108.73
+>>>   10.250.110.196
+>>>   10.250.108.192
+>>>   10.250.105.241
+>>>   10.250.108.64
+>>>   10.250.110.173
+>>>   10.250.105.28
+>>>   10.250.108.5
+>>>   10.250.111.191
+>>>   10.250.110.133
+>>>   10.250.111.89
+>>>   10.250.110.113
+>>>   10.250.111.244
+>>>   10.250.104.151
+>>>   10.250.104.237
+>>>   10.250.106.32
+>>>   10.250.106.65
+>>>   10.250.107.64
+>>>   10.250.108.56
+>>>   10.250.109.16
+>>>   10.250.104.120
+>>>   10.250.107.48
+>>>   10.250.110.90
+>>>   10.250.110.246
+>>>   10.250.104.124
+>>>   10.250.105.160
+>>>   10.250.106.122
+>>>   10.250.106.237
+>>>   10.250.107.4
+>>>   10.250.107.210
+>>>   10.250.108.11
+>>>   10.250.110.237
+>>>   10.250.106.71
+>>>   10.250.107.26
+>>>   10.250.110.19
+>>>   10.250.110.154
+>>>   10.250.105.23
+>>>   10.250.105.173
+>>>   10.250.106.181
+>>>   10.250.108.243
+>>>   10.250.110.168
+>>>   10.250.104.127
+>>>   10.250.105.183
+>>>   10.250.111.105
+>>>   10.250.107.118
+>>>   10.250.109.129
+>>>   10.250.111.216
+>>>   10.250.111.230
 >>>   10.250.104.8
+>>>   10.250.109.153
+>>>   10.250.104.192
+>>>   10.250.108.238
+>>>   10.250.108.244
+>>>   10.250.108.251
+>>>   10.250.110.201
+>>>   10.250.106.118
+>>>   10.250.106.245
+>>>   10.250.108.105
+>>>   10.250.110.148
+>>>   10.250.105.16
+>>>   10.250.108.183
+>>>   10.250.111.41
+>>>   10.250.111.56
+>>>   10.250.105.238
+>>>   10.250.106.13
+>>>   10.250.111.73
 >>>   10.250.104.18
 >>>   10.250.104.25
+>>>   10.250.105.227
+>>>   10.250.108.147
+>>>   10.250.111.49
+>>>   10.250.104.115
+>>>   10.250.105.131
+>>>   10.250.106.233
+>>>   10.250.107.55
+>>>   10.250.104.76
+>>>   10.250.106.153
+>>>   10.250.109.75
+>>>   10.250.111.131
+>>>   10.250.111.142
+>>>   10.250.106.41
+>>>   10.250.108.86
+>>>   10.250.108.136
+>>>   10.250.104.231
+>>>   10.250.108.210
+>>>   10.250.108.212
+>>>   10.250.110.67
 >>>   10.250.104.21
+>>>   10.250.106.6
+>>>   10.250.106.64
+>>>   10.250.107.43
+>>>   10.250.107.231
+>>>   10.250.111.44
+>>>   10.250.108.68
+>>>   10.250.109.147
+>>>   10.250.110.224
+>>>   10.250.111.181
+>>>   10.250.105.6
+>>>   10.250.106.68
+>>>   10.250.110.84
+>>>   10.250.110.120
+>>>   10.250.104.145
+>>>   10.250.105.202
+>>>   10.250.110.181
+>>>   10.250.105.153
+>>>   10.250.107.46
+>>>   10.250.109.188
+>>>   10.250.111.152
+>>>   10.250.104.185
+>>>   10.250.105.30
+>>>   10.250.111.60
+>>>   10.250.107.220
+>>>   10.250.109.231
+>>>   10.250.110.98
+>>>   10.250.111.238
 >>>   10.250.104.39
+>>>   10.250.105.125
+>>>   10.250.107.9
+>>>   10.250.109.243
+>>>   10.250.111.51
+>>>   10.250.111.222
+>>>   10.250.104.187
+>>>   10.250.104.226
+>>>   10.250.106.50
+>>>   10.250.108.196
+>>>   10.250.110.122
+>>>   10.250.105.78
+>>>   10.250.105.106
+>>>   10.250.105.158
+>>>   10.250.106.154
+>>>   10.250.108.114
+>>>   10.250.109.240
+>>>   10.250.110.112
+>>>   10.250.106.141
+>>>   10.250.108.20
+>>>   10.250.108.145
+>>>   10.250.110.145
 >>>   10.250.104.32
+>>>   10.250.105.137
+>>>   10.250.106.246
+>>>   10.250.107.194
+>>>   10.250.107.243
+>>>   10.250.109.48
+>>>   10.250.104.123
+>>>   10.250.107.84
+>>>   10.250.107.134
+>>>   10.250.109.11
+>>>   10.250.111.63
 >>>   10.250.104.29
+>>>   10.250.105.91
+>>>   10.250.105.135
+>>>   10.250.105.192
+>>>   10.250.108.143
+>>>   10.250.109.108
+>>>   10.250.109.226
+>>>   10.250.110.96
+>>>   10.250.110.128
+>>>   10.250.106.72
+>>>   10.250.107.24
+>>>   10.250.109.167
+>>>   10.250.109.206
+>>>   10.250.105.223
+>>>   10.250.108.223
+>>>   10.250.109.112
+>>>   10.250.110.225
 >>>   10.250.104.23
+>>>   10.250.104.251
+>>>   10.250.109.255
+>>>   10.250.111.235
+>>>   10.250.106.134
+>>>   10.250.106.137
+>>>   10.250.106.215
+>>>   10.250.108.36
+>>>   10.250.111.14
+>>>   10.250.106.158
+>>>   10.250.106.160
+>>>   10.250.109.238
+>>>   10.250.104.66
+>>>   10.250.105.34
 >>>   10.250.104.43
+>>>   10.250.105.230
+>>>   10.250.106.234
+>>>   10.250.111.45
+>>>   10.250.107.138
+>>>   10.250.107.141
+>>>   10.250.110.5
+>>>   10.250.110.108
+>>>   10.250.110.185
+>>>   10.250.104.103
+>>>   10.250.107.85
+>>>   10.250.109.84
+>>>   10.250.106.164
+>>>   10.250.109.125
+>>>   10.250.111.172
+>>>   10.250.104.91
+>>>   10.250.109.230
+>>>   10.250.106.38
+>>>   10.250.111.114
+>>>   10.250.111.166
+>>>   10.250.105.218
+>>>   10.250.110.52
+>>>   10.250.110.64
+>>>   10.250.111.26
+>>>   10.250.108.246
+>>>   10.250.111.80
+>>>   10.250.104.114
+>>>   10.250.107.184
+>>>   10.250.108.80
+>>>   10.250.108.110
+>>>   10.250.106.12
+>>>   10.250.107.66
+>>>   10.250.107.150
+>>>   10.250.109.43
+>>>   10.250.104.70
+>>>   10.250.105.229
+>>>   10.250.106.48
+>>>   10.250.107.177
+>>>   10.250.110.123
+>>>   10.250.111.82
 >>>   10.250.104.46
+>>>   10.250.109.159
+>>>   10.250.111.130
+>>>   10.250.104.225
+>>>   10.250.105.159
+>>>   10.250.106.83
+>>>   10.250.111.123
+>>>   10.250.105.60
+>>>   10.250.105.130
+>>>   10.250.108.0
+>>>   10.250.109.124
+>>>   10.250.110.95
+>>>   10.250.110.253
+>>>   10.250.111.24
+>>>   10.250.111.223
+>>>   10.250.107.124
+>>>   10.250.108.146
+>>>   10.250.110.21
+>>>   10.250.110.232
+>>>   10.250.105.144
+>>>   10.250.105.253
+>>>   10.250.108.72
+>>>   10.250.109.42
+>>>   10.250.106.10
+>>>   10.250.108.198
+>>>   10.250.104.154
+>>>   10.250.105.10
+>>>   10.250.105.166
+>>>   10.250.106.81
+>>>   10.250.106.155
+>>>   10.250.106.67
+>>>   10.250.106.140
+>>>   10.250.111.120
+>>>   10.250.104.216
+>>>   10.250.104.220
+>>>   10.250.107.98
+>>>   10.250.107.246
+>>>   10.250.106.142
+>>>   10.250.107.182
+>>>   10.250.108.206
+>>>   10.250.108.239
+>>>   10.250.109.130
+>>>   10.250.110.158
+>>>   10.250.111.236
+>>>   10.250.107.88
+>>>   10.250.110.126
+>>>   10.250.110.197
+>>>   10.250.110.223
+>>>   10.250.104.199
+>>>   10.250.106.74
+>>>   10.250.107.39
+>>>   10.250.107.240
+>>>   10.250.111.254
+>>>   10.250.104.214
+>>>   10.250.104.233
+>>>   10.250.105.24
+>>>   10.250.106.214
+>>>   10.250.110.92
+>>>   10.250.110.164
 >>>   10.250.104.28
+>>>   10.250.104.118
+>>>   10.250.107.54
+>>>   10.250.107.158
+>>>   10.250.109.53
+>>>   10.250.109.82
+>>>   10.250.110.83
 >>>   10.250.104.4
+>>>   10.250.106.161
+>>>   10.250.107.34
+>>>   10.250.107.112
+>>>   10.250.109.250
+>>>   10.250.111.158
+>>>   10.250.105.221
+>>>   10.250.107.214
+>>>   10.250.108.237
+>>>   10.250.110.46
+>>>   10.250.110.213
+>>>   10.250.110.241
+>>>   10.250.109.71
+>>>   10.250.111.65
+>>>   10.250.105.129
+>>>   10.250.105.150
+>>>   10.250.107.228
+>>>   10.250.104.95
+>>>   10.250.110.131
+>>>   10.250.109.171
 >>>   10.250.104.41
+>>>   10.250.107.191
+>>>   10.250.109.203
+>>>   10.250.110.160
+>>>   10.250.105.250
+>>>   10.250.106.183
+>>>   10.250.111.208
 >>>   10.250.104.15
+>>>   10.250.105.206
+>>>   10.250.107.225
+>>>   10.250.107.232
+>>>   10.250.111.177
 >>>   10.250.104.14
+>>>   10.250.106.34
+>>>   10.250.107.44
+>>>   10.250.107.157
+>>>   10.250.108.19
+>>>   10.250.108.236
+>>>   10.250.111.59
+>>>   10.250.104.201
+>>>   10.250.108.83
+>>>   10.250.108.95
+>>>   10.250.108.163
+>>>   10.250.108.221
+>>>   10.250.109.220
+>>>   10.250.108.9
+>>>   10.250.109.86
+>>>   10.250.109.93
+>>>   10.250.104.223
+>>>   10.250.105.140
+>>>   10.250.106.16
+>>>   10.250.107.137
+>>>   10.250.108.120
+>>>   10.250.110.43
+>>>   10.250.111.140
 >>>   10.250.104.45
+>>>   10.250.107.129
+>>>   10.250.110.242
+>>>   10.250.111.47
+>>>   10.250.106.193
+>>>   10.250.109.97
+>>>   10.250.104.153
+>>>   10.250.105.201
+>>>   10.250.107.175
+>>>   10.250.105.105
+>>>   10.250.111.151
 >>>   10.250.104.42 OK
 >>> host in host_reject_connection? no (option unset)
 >>> host in sender_unqualified_hosts? no (option unset)