[Spice-devel] [PATCH] RFC: server: plug some leaks on error
Marc-André Lureau
marcandre.lureau at gmail.com
Fri Oct 4 20:59:55 CEST 2013
Plug what looks like memory leaks, that could be potentially be
triggered by a misbehaving guest.
---
server/red_worker.c | 9 +++++++--
spice-common | 2 +-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index f5a5553..8f7a1fc 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -4949,10 +4949,13 @@ static int red_process_cursor(RedWorker *worker, uint32_t max_pipe_size, int *ri
case QXL_CMD_CURSOR: {
RedCursorCmd *cursor = spice_new0(RedCursorCmd, 1);
- if (!red_get_cursor_cmd(&worker->mem_slots, ext_cmd.group_id,
+ if (red_get_cursor_cmd(&worker->mem_slots, ext_cmd.group_id,
cursor, ext_cmd.cmd.data)) {
- qxl_process_cursor(worker, cursor, ext_cmd.group_id);
+ free(cursor);
+ break;
}
+
+ qxl_process_cursor(worker, cursor, ext_cmd.group_id);
break;
}
default:
@@ -5058,6 +5061,7 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
if (red_get_surface_cmd(&worker->mem_slots, ext_cmd.group_id,
surface, ext_cmd.cmd.data)) {
+ free(surface);
break;
}
red_process_surface(worker, surface, ext_cmd.group_id, FALSE);
@@ -11647,6 +11651,7 @@ void handle_dev_loadvm_commands(void *opaque, void *payload)
/* XXX allow failure in loadvm? */
spice_warning("failed loadvm command type (%d)",
ext[i].cmd.type);
+ free(cursor_cmd);
continue;
}
qxl_process_cursor(worker, cursor_cmd, ext[i].group_id);
diff --git a/spice-common b/spice-common
index e443c9f..7e8ba10 160000
--- a/spice-common
+++ b/spice-common
@@ -1 +1 @@
-Subproject commit e443c9f6039407633d38a0eba03c344272ac8559
+Subproject commit 7e8ba10779a3fb11d587e8a59fe389acd2412dd0
--
1.8.3.1
More information about the Spice-devel
mailing list