From: Daniel P. Berrange Date: Thu, 4 Jun 2015 17:18:56 +0000 (+0200) Subject: rpc: Fix reference counting around virNetSocketAddIOCallback X-Git-Tag: v1.2.17-rc1~251 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ccb05762ad0b0b324ecf7c95dd4b4b7c04c79ca6;p=thirdparty%2Flibvirt.git rpc: Fix reference counting around virNetSocketAddIOCallback Ref service passed as a parameter to the callback. And don't unref the socket that is part of the service being passed at another point in code. Signed-off-by: Martin Kletzander --- diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c index d84b6defd4..9087473efd 100644 --- a/src/rpc/virnetserverservice.c +++ b/src/rpc/virnetserverservice.c @@ -301,12 +301,15 @@ virNetServerServicePtr virNetServerServiceNewFD(int fd, /* IO callback is initially disabled, until we're ready * to deal with incoming clients */ + virObjectRef(svc); if (virNetSocketAddIOCallback(svc->socks[i], 0, virNetServerServiceAccept, svc, - virObjectFreeCallback) < 0) + virObjectFreeCallback) < 0) { + virObjectUnref(svc); goto error; + } } @@ -386,7 +389,6 @@ virNetServerServicePtr virNetServerServiceNewPostExecRestart(virJSONValuePtr obj svc, virObjectFreeCallback) < 0) { virObjectUnref(svc); - virObjectUnref(sock); goto error; } }