diff mbox series

[for-3.2,09/13] slirp: fix slirp_add_exec() leaks

Message ID 20181110134548.14741-10-marcandre.lureau@redhat.com
State New
Headers show
Series slirp: cleanups | expand

Commit Message

Marc-André Lureau Nov. 10, 2018, 1:45 p.m. UTC
Free the list elements allocated in add_exec().

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 slirp/misc.h  | 2 +-
 slirp/slirp.c | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

Comments

Samuel Thibault Nov. 10, 2018, 2:37 p.m. UTC | #1
Marc-André Lureau, le sam. 10 nov. 2018 17:45:44 +0400, a ecrit:
> Free the list elements allocated in add_exec().

Applied to my tree, thanks!

Samuel
diff mbox series

Patch

diff --git a/slirp/misc.h b/slirp/misc.h
index 94829722cd..0bc5e74bc5 100644
--- a/slirp/misc.h
+++ b/slirp/misc.h
@@ -12,7 +12,7 @@  struct ex_list {
 	void *ex_chardev;
 	struct in_addr ex_addr;		/* Server address */
 	int ex_fport;                   /* Port to telnet to */
-	const char *ex_exec;            /* Command line of what to exec */
+	char *ex_exec;                  /* Command line of what to exec */
 	struct ex_list *ex_next;
 };
 
diff --git a/slirp/slirp.c b/slirp/slirp.c
index d6623a2bbf..29fe4702cc 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -342,6 +342,14 @@  Slirp *slirp_init(int restricted, bool in_enabled, struct in_addr vnetwork,
 
 void slirp_cleanup(Slirp *slirp)
 {
+    struct ex_list *e, *next;
+
+    for (e = slirp->exec_list; e; e = next) {
+        next = e->ex_next;
+        g_free(e->ex_exec);
+        g_free(e);
+    }
+
     QTAILQ_REMOVE(&slirp_instances, slirp, entry);
 
     unregister_savevm(NULL, "slirp", slirp);