[Qemu-devel] [PULL 09/65] slirp: fix slirp_add_exec() leaks

2019-01-14 Thread Samuel Thibault
From: Marc-André Lureau 

Free the list elements allocated in add_exec().

Signed-off-by: Marc-André Lureau 
Signed-off-by: Samuel Thibault 
---
 slirp/misc.h  | 2 +-
 slirp/slirp.c | 8 
 2 files changed, 9 insertions(+), 1 deletion(-)

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 ab08694e37..1627436e7d 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(_instances, slirp, entry);
 
 unregister_savevm(NULL, "slirp", slirp);
-- 
2.20.1




[Qemu-devel] [PULL 09/65] slirp: fix slirp_add_exec() leaks

2019-01-13 Thread Samuel Thibault
From: Marc-André Lureau 

Free the list elements allocated in add_exec().

Signed-off-by: Marc-André Lureau 
Signed-off-by: Samuel Thibault 
---
 slirp/misc.h  | 2 +-
 slirp/slirp.c | 8 
 2 files changed, 9 insertions(+), 1 deletion(-)

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 ab08694e37..1627436e7d 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(_instances, slirp, entry);
 
 unregister_savevm(NULL, "slirp", slirp);
-- 
2.20.1