Commit fac7d7b1 authored by Peter Maydell's avatar Peter Maydell Committed by Jason Wang
Browse files

tap: fix memory leak on failure in net_init_tap()



Commit 091a6b2a fixed most of the memory leaks in failure
paths in net_init_tap() reported by Coverity (CID 1356216),
but missed one. Fix it by deferring the allocation of
fds and vhost_fds until after the error check.

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent a023b7ac
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -788,8 +788,8 @@ int net_init_tap(const Netdev *netdev, const char *name,
            return -1;
        }
    } else if (tap->has_fds) {
        char **fds = g_new0(char *, MAX_TAP_QUEUES);
        char **vhost_fds = g_new0(char *, MAX_TAP_QUEUES);
        char **fds;
        char **vhost_fds;
        int nfds, nvhosts;

        if (tap->has_ifname || tap->has_script || tap->has_downscript ||
@@ -801,6 +801,9 @@ int net_init_tap(const Netdev *netdev, const char *name,
            return -1;
        }

        fds = g_new0(char *, MAX_TAP_QUEUES);
        vhost_fds = g_new0(char *, MAX_TAP_QUEUES);

        nfds = get_fds(tap->fds, fds, MAX_TAP_QUEUES);
        if (tap->has_vhostfds) {
            nvhosts = get_fds(tap->vhostfds, vhost_fds, MAX_TAP_QUEUES);