diff mbox series

[04/27] net/slirp: fix leaks on forwaring rule registration error

Message ID 20190117114359.5164-5-marcandre.lureau@redhat.com
State New
Headers show
Series slirp: make it again a standalone project (part 2) | expand

Commit Message

Marc-André Lureau Jan. 17, 2019, 11:43 a.m. UTC
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 net/slirp.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Eric Blake Jan. 17, 2019, 5:50 p.m. UTC | #1
On 1/17/19 5:43 AM, Marc-André Lureau wrote:

In the subject: s/forwaring/forwarding/

> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  net/slirp.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/net/slirp.c b/net/slirp.c
> index 750105a466e..0b15f427f5c 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -807,6 +807,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
>          qemu_chr_fe_init(&fwd->hd, chr, &err);
>          if (err) {
>              error_propagate(errp, err);
> +            object_unparent(OBJECT(chr));
>              g_free(fwd);
>              return -1;
>          }
> @@ -815,6 +816,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
>                                 &server, port) < 0) {
>              error_setg(errp, "Conflicting/invalid host:port in guest "
>                         "forwarding rule '%s'", config_str);
> +            qemu_chr_fe_deinit(&fwd->hd, true);
>              g_free(fwd);
>              return -1;
>          }
>
Samuel Thibault Jan. 26, 2019, 11:57 p.m. UTC | #2
Marc-André Lureau, le jeu. 17 janv. 2019 15:43:36 +0400, a ecrit:
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Applied, thanks!
diff mbox series

Patch

diff --git a/net/slirp.c b/net/slirp.c
index 750105a466e..0b15f427f5c 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -807,6 +807,7 @@  static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
         qemu_chr_fe_init(&fwd->hd, chr, &err);
         if (err) {
             error_propagate(errp, err);
+            object_unparent(OBJECT(chr));
             g_free(fwd);
             return -1;
         }
@@ -815,6 +816,7 @@  static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
                                &server, port) < 0) {
             error_setg(errp, "Conflicting/invalid host:port in guest "
                        "forwarding rule '%s'", config_str);
+            qemu_chr_fe_deinit(&fwd->hd, true);
             g_free(fwd);
             return -1;
         }