tap: fix memory leak on failure in net_init_tap()
Commit 091a6b2ac
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: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
a023b7ac62
commit
fac7d7b1cd
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user