summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-03-15 17:33:48 +0100
committerGitHub <noreply@github.com>2019-03-15 17:33:48 +0100
commit95658673a0889c26cb7d3c70b9e8a5e9ff09784a (patch)
treece16ec9b29ac97708f9e594887926023daa801ab
parent4209f6619d6bbf7aaac7e4d68a5a8f00fd8c872d (diff)
parent50969cff60e86600034ce88bfdb539a3f9f240ad (diff)
downloadsystemd-95658673a0889c26cb7d3c70b9e8a5e9ff09784a.tar.gz
Merge pull request #12016 from yuwata/fix-two-memleaks-found-by-oss-fuzz
Fix two memleaks found by oss fuzz
-rw-r--r--src/network/netdev/l2tp-tunnel.c6
-rw-r--r--src/network/netdev/wireguard.c8
-rw-r--r--src/nspawn/nspawn-mount.c2
-rw-r--r--test/fuzz/fuzz-netdev-parser/oss-fuzz-137196
-rw-r--r--test/fuzz/fuzz-nspawn-settings/oss-fuzz-136912
5 files changed, 16 insertions, 8 deletions
diff --git a/src/network/netdev/l2tp-tunnel.c b/src/network/netdev/l2tp-tunnel.c
index c78b19ce93..abaa92fe47 100644
--- a/src/network/netdev/l2tp-tunnel.c
+++ b/src/network/netdev/l2tp-tunnel.c
@@ -629,9 +629,9 @@ int config_parse_l2tp_session_name(
return 0;
}
- session->name = strdup(rvalue);
- if (!session->name)
- return -ENOMEM;
+ r = free_and_strdup(&session->name, rvalue);
+ if (r < 0)
+ return log_oom();
session = NULL;
return 0;
diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c
index b1b2ae1bb9..73c5402972 100644
--- a/src/network/netdev/wireguard.c
+++ b/src/network/netdev/wireguard.c
@@ -758,12 +758,12 @@ int config_parse_wireguard_endpoint(const char *unit,
++end;
}
- peer->endpoint_host = strndup(begin, len);
- if (!peer->endpoint_host)
+ r = free_and_strndup(&peer->endpoint_host, begin, len);
+ if (r < 0)
return log_oom();
- peer->endpoint_port = strdup(end);
- if (!peer->endpoint_port)
+ r = free_and_strdup(&peer->endpoint_port, end);
+ if (r < 0)
return log_oom();
r = set_ensure_allocated(&w->peers_with_unresolved_endpoint, NULL);
diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c
index 12f557ee99..4878586c4e 100644
--- a/src/nspawn/nspawn-mount.c
+++ b/src/nspawn/nspawn-mount.c
@@ -304,7 +304,7 @@ int overlay_mount_parse(CustomMount **l, size_t *n, const char *s, bool read_onl
/* If the upper directory is unspecified, then let's create it automatically as a throw-away directory
* in /var/tmp */
if (isempty(upper))
- upper = NULL;
+ upper = mfree(upper);
else if (!source_path_is_valid(upper))
return -EINVAL;
diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-13719 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-13719
new file mode 100644
index 0000000000..adff4c186b
--- /dev/null
+++ b/test/fuzz/fuzz-netdev-parser/oss-fuzz-13719
@@ -0,0 +1,6 @@
+[NetDev]
+Name=w
+Kind=wireguard
+[WireGuardPeer]
+Endpoint=:0
+Endpoint=:8 \ No newline at end of file
diff --git a/test/fuzz/fuzz-nspawn-settings/oss-fuzz-13691 b/test/fuzz/fuzz-nspawn-settings/oss-fuzz-13691
new file mode 100644
index 0000000000..51f46e3734
--- /dev/null
+++ b/test/fuzz/fuzz-nspawn-settings/oss-fuzz-13691
@@ -0,0 +1,2 @@
+[Files]
+Overlay=/:: \ No newline at end of file