[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/25] ui/vnc: fix leak of SocketAddress **
From: |
Michael Tokarev |
Subject: |
[Qemu-devel] [PULL 11/25] ui/vnc: fix leak of SocketAddress ** |
Date: |
Mon, 31 Jul 2017 13:21:30 +0300 |
From: Philippe Mathieu-Daudé <address@hidden>
Extract the (correct) cleaning code as a new function vnc_free_addresses() then
use it to remove the memory leaks.
Reported-by: Clang Static Analyzer
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Daniel P. Berrange <address@hidden>
Signed-off-by: Michael Tokarev <address@hidden>
---
ui/vnc.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index eb91559b6b..651cbb8606 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3521,6 +3521,20 @@ static int vnc_display_get_address(const char *addrstr,
return ret;
}
+static void vnc_free_addresses(SocketAddress ***retsaddr,
+ size_t *retnsaddr)
+{
+ size_t i;
+
+ for (i = 0; i < *retnsaddr; i++) {
+ qapi_free_SocketAddress((*retsaddr)[i]);
+ }
+ g_free(*retsaddr);
+
+ *retsaddr = NULL;
+ *retnsaddr = 0;
+}
+
static int vnc_display_get_addresses(QemuOpts *opts,
bool reverse,
SocketAddress ***retsaddr,
@@ -3538,7 +3552,6 @@ static int vnc_display_get_addresses(QemuOpts *opts,
bool has_ipv6 = qemu_opt_get(opts, "ipv6");
bool ipv4 = qemu_opt_get_bool(opts, "ipv4", false);
bool ipv6 = qemu_opt_get_bool(opts, "ipv6", false);
- size_t i;
int displaynum = -1;
int ret = -1;
@@ -3614,16 +3627,8 @@ static int vnc_display_get_addresses(QemuOpts *opts,
ret = 0;
cleanup:
if (ret < 0) {
- for (i = 0; i < *retnsaddr; i++) {
- qapi_free_SocketAddress((*retsaddr)[i]);
- }
- g_free(*retsaddr);
- for (i = 0; i < *retnwsaddr; i++) {
- qapi_free_SocketAddress((*retwsaddr)[i]);
- }
- g_free(*retwsaddr);
- *retsaddr = *retwsaddr = NULL;
- *retnsaddr = *retnwsaddr = 0;
+ vnc_free_addresses(retsaddr, retnsaddr);
+ vnc_free_addresses(retwsaddr, retnwsaddr);
}
return ret;
}
@@ -3772,7 +3777,6 @@ void vnc_display_open(const char *id, Error **errp)
int acl = 0;
int lock_key_sync = 1;
int key_delay_ms;
- size_t i;
if (!vd) {
error_setg(errp, "VNC display not active");
@@ -3993,12 +3997,8 @@ void vnc_display_open(const char *id, Error **errp)
}
cleanup:
- for (i = 0; i < nsaddr; i++) {
- qapi_free_SocketAddress(saddr[i]);
- }
- for (i = 0; i < nwsaddr; i++) {
- qapi_free_SocketAddress(wsaddr[i]);
- }
+ vnc_free_addresses(&saddr, &nsaddr);
+ vnc_free_addresses(&wsaddr, &nwsaddr);
return;
fail:
--
2.11.0
- [Qemu-devel] [PULL 12/25] net/eth: fix incorrect check of iov_to_buf() return value, (continued)
- [Qemu-devel] [PULL 12/25] net/eth: fix incorrect check of iov_to_buf() return value, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 08/25] loader: check get_image_size() return value, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 04/25] tests: test-netfilter && pxe-test require slirp, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 16/25] syscall: fix use of uninitialized values, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 13/25] m68k/translate: fix incorrect copy/paste, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 19/25] docs: fix broken paths to docs/interop dir, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 18/25] thunk: assert nb_fields is valid, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 17/25] syscall: check inotify() and eventfd() return value, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 20/25] docs: fix broken paths to docs/interop/qcow2.txt, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 22/25] docs: fix broken paths to docs/devel/atomics.txt, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 11/25] ui/vnc: fix leak of SocketAddress **,
Michael Tokarev <=
- [Qemu-devel] [PULL 21/25] docs: fix broken paths to docs/devel/qapi-code-gen.txt, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 03/25] MAINTAINERS: Improve the NetBSD regex pattern, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 15/25] syscall: fix dereference of undefined pointer, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 01/25] tests: check-qom-proplist: fix leak, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 05/25] build-sys: there is no qemu-ga.c, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 25/25] docs: fix broken paths to docs/specs/ivshmem-spec.txt, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 14/25] linux-user/sh4: fix incorrect memory write, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 24/25] docs: fix broken paths to docs/config/ich9-ehci-uhci.cfg, Michael Tokarev, 2017/07/31
- [Qemu-devel] [PULL 23/25] docs: fix broken paths to docs/devel/tracing.txt, Michael Tokarev, 2017/07/31