aboutsummaryrefslogtreecommitdiff
path: root/dns/bind9
diff options
context:
space:
mode:
authorDoug Barton <dougb@FreeBSD.org>2005-08-18 19:12:08 +0000
committerDoug Barton <dougb@FreeBSD.org>2005-08-18 19:12:08 +0000
commit700756844d6321cc15408bc408a46ec333d32074 (patch)
tree6622da05a64531e908254f062d8f581c5f839a9c /dns/bind9
parentf2bba2e7b3318447077dc281d0f017dad8d4fe81 (diff)
This issue was researched by glebius, and this patch was
incorporated by ISC into the next version of BIND. The patch addresses a problem with high-load resolvers which hit memory barriers. Without this patch, running the resolving name server out of memory would lead to "unpredictable results." Of course, the canonical answer to this problem is to put more memory into the system, however that is not always possible, and the code should be able to handle this situation gracefully in any case. Approved by: portmgr (krion)
Notes
Notes: svn path=/head/; revision=140919
Diffstat (limited to 'dns/bind9')
-rw-r--r--dns/bind9/files/patch-lib_dns_resolver.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/dns/bind9/files/patch-lib_dns_resolver.c b/dns/bind9/files/patch-lib_dns_resolver.c
new file mode 100644
index 000000000000..5605bb71f3ec
--- /dev/null
+++ b/dns/bind9/files/patch-lib_dns_resolver.c
@@ -0,0 +1,23 @@
+--- lib/dns/resolver.c.orig Tue Feb 8 15:59:44 2005
++++ lib/dns/resolver.c Wed Aug 17 02:42:48 2005
+@@ -2665,7 +2665,7 @@
+ unsigned int options, unsigned int bucketnum, fetchctx_t **fctxp)
+ {
+ fetchctx_t *fctx;
+- isc_result_t result = ISC_R_SUCCESS;
++ isc_result_t result;
+ isc_result_t iresult;
+ isc_interval_t interval;
+ dns_fixedname_t qdomain;
+@@ -2687,8 +2687,10 @@
+ strcat(buf, "/"); /* checked */
+ strcat(buf, typebuf); /* checked */
+ fctx->info = isc_mem_strdup(res->mctx, buf);
+- if (fctx->info == NULL)
++ if (fctx->info == NULL) {
++ result = ISC_R_NOMEMORY;
+ goto cleanup_fetch;
++ }
+ FCTXTRACE("create");
+ dns_name_init(&fctx->name, NULL);
+ result = dns_name_dup(name, res->mctx, &fctx->name);