dnsmasq: Handle memory allocation failure in make_non_terminals()
Backport upstream commit: ea6cc33 Handle memory allocation failure in make_non_terminals() Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
This commit is contained in:
parent
e8cbfedc72
commit
687168ccd9
2 changed files with 46 additions and 1 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dnsmasq
|
PKG_NAME:=dnsmasq
|
||||||
PKG_VERSION:=2.80test6
|
PKG_VERSION:=2.80test6
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/test-releases
|
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/test-releases
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
From ea6cc338042094f8023d224e53c244da158e6499 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simon Kelley <simon@thekelleys.org.uk>
|
||||||
|
Date: Tue, 18 Sep 2018 23:21:17 +0100
|
||||||
|
Subject: [PATCH] Handle memory allocation failure in make_non_terminals()
|
||||||
|
|
||||||
|
Thanks to Kristian Evensen for spotting the problem.
|
||||||
|
|
||||||
|
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||||
|
---
|
||||||
|
src/cache.c | 17 ++++++++++-------
|
||||||
|
1 file changed, 10 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/cache.c
|
||||||
|
+++ b/src/cache.c
|
||||||
|
@@ -1360,7 +1360,7 @@ void cache_add_dhcp_entry(char *host_nam
|
||||||
|
static void make_non_terminals(struct crec *source)
|
||||||
|
{
|
||||||
|
char *name = cache_get_name(source);
|
||||||
|
- struct crec* crecp, *tmp, **up;
|
||||||
|
+ struct crec *crecp, *tmp, **up;
|
||||||
|
int type = F_HOSTS | F_CONFIG;
|
||||||
|
#ifdef HAVE_DHCP
|
||||||
|
if (source->flags & F_DHCP)
|
||||||
|
@@ -1434,12 +1434,15 @@ static void make_non_terminals(struct cr
|
||||||
|
#endif
|
||||||
|
crecp = whine_malloc(sizeof(struct crec));
|
||||||
|
|
||||||
|
- *crecp = *source;
|
||||||
|
- crecp->flags &= ~(F_IPV4 | F_IPV6 | F_CNAME | F_DNSKEY | F_DS | F_REVERSE);
|
||||||
|
- crecp->flags |= F_NAMEP;
|
||||||
|
- crecp->name.namep = name;
|
||||||
|
-
|
||||||
|
- cache_hash(crecp);
|
||||||
|
+ if (crecp)
|
||||||
|
+ {
|
||||||
|
+ *crecp = *source;
|
||||||
|
+ crecp->flags &= ~(F_IPV4 | F_IPV6 | F_CNAME | F_DNSKEY | F_DS | F_REVERSE);
|
||||||
|
+ crecp->flags |= F_NAMEP;
|
||||||
|
+ crecp->name.namep = name;
|
||||||
|
+
|
||||||
|
+ cache_hash(crecp);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue