From: Michal Privoznik Date: Fri, 7 Oct 2022 11:05:03 +0000 (+0200) Subject: virNetServerProgramDispatchCall: Avoid calling xdr_free(_, NULL) X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8ef8d9e21b10f62cad0c36a6ac2b57ac61acd0ec;p=libvirt.git virNetServerProgramDispatchCall: Avoid calling xdr_free(_, NULL) In recent commit of v8.8.0-41-g41eb0f446c I've suggested during review to put both xdr_free() calls under error label, assuming that xdr_free() accepts NULL and thus is a NOP when the control jumps onto the label even before either of @arg or @ret was allocated. Well, turns out, xdr_free() does no accept NULL and thus we have to guard its call. But since @dispatcher is already set by the time either of the variables is allocated, we can replace the condition from 'if (dispatcher)' to 'if (arg)' and 'if (ret)'. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- diff --git a/src/rpc/virnetserverprogram.c b/src/rpc/virnetserverprogram.c index 212e0d5ab5..58b6a278ca 100644 --- a/src/rpc/virnetserverprogram.c +++ b/src/rpc/virnetserverprogram.c @@ -475,10 +475,10 @@ virNetServerProgramDispatchCall(virNetServerProgram *prog, return virNetServerClientSendMessage(client, msg); error: - if (dispatcher) { + if (arg) xdr_free(dispatcher->arg_filter, arg); + if (ret) xdr_free(dispatcher->ret_filter, ret); - } /* Bad stuff (de-)serializing message, but we have an * RPC error message we can send back to the client */