From c9ede1cfba72a8dfe62db4cc1980cbe0adb7f712 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 28 Jun 2011 17:46:15 +0100 Subject: [PATCH] Avoid free'ing a filtered RPC message in the server When a filter steals an RPC message, that message must not be freed, except by the filter code itself * src/rpc/virnetserverclient.c: Don't free stolen RPC messages --- src/rpc/virnetserverclient.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c index 327b121faf..57a3446d39 100644 --- a/src/rpc/virnetserverclient.c +++ b/src/rpc/virnetserverclient.c @@ -723,13 +723,17 @@ readmore: filter = client->filters; while (filter) { int ret = filter->func(client, msg, filter->opaque); - if (ret < 0 || ret > 0) { + if (ret < 0) { virNetMessageFree(msg); msg = NULL; if (ret < 0) client->wantClose = true; break; } + if (ret > 0) { + msg = NULL; + break; + } filter = filter->next; } -- GitLab