summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunnan Xu <junnanx.xu@gmail.com>2022-05-31 22:31:19 +0800
committerDaniel Golle <daniel@makrotopia.org>2022-05-31 15:44:55 +0100
commit39ef9fe1388029c476db62889ef2ef5661613321 (patch)
treea9396f10c199ac6956304eae657c7e0cb5b1198d
parent2e1fcf4cd61222fc0d307d863da71d17fbd34d6f (diff)
downloadnetifd-39ef9fe1388029c476db62889ef2ef5661613321.tar.gz
interface-ip: fix memory corruption bug when using jail network namespaces
memory corruption when resolv_conf specified by input -r parameters and the resolv_conf length less than "/tmp/resolv.conf-.d/resolv.conf.auto" Signed-off-by: Junnan Xu <junnanx.xu@gmail.com>
-rw-r--r--interface-ip.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/interface-ip.c b/interface-ip.c
index 585cb6f..ab4a5cf 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -1566,7 +1566,9 @@ __interface_write_dns_entries(FILE *f, const char *jail)
void
interface_write_resolv_conf(const char *jail)
{
- size_t plen = (jail ? strlen(jail) + 1 : 0 ) + strlen(resolv_conf) + 1;
+ size_t plen = (jail ? strlen(jail) + 1 : 0 ) +
+ (strlen(resolv_conf) >= strlen(DEFAULT_RESOLV_CONF) ?
+ strlen(resolv_conf) : strlen(DEFAULT_RESOLV_CONF) ) + 1;
char *path = alloca(plen);
char *dpath = alloca(plen);
char *tmppath = alloca(plen + 4);