diff --git a/daemon/remote.c b/daemon/remote.c index 5369d0a8ae5f29d508f16f206b27e966d5ff7afb..6a7790e7120a35833fcfdfc37f355c3c43b09395 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -4745,17 +4745,19 @@ remoteDispatchDomainEventSend (struct qemud_client *client, /* Serialise the return header and event. */ xdrmem_create (&xdr, - msg->buffer + msg->bufferOffset, - msg->bufferLength - msg->bufferOffset, + msg->buffer, + msg->bufferLength, XDR_ENCODE); - if (!xdr_remote_domain_event_msg(&xdr, data)) + /* Skip over the header we just wrote */ + if (xdr_setpos (&xdr, msg->bufferOffset) == 0) goto xdr_error; + if (!xdr_remote_domain_event_msg(&xdr, data)) + goto xdr_error; - /* Update length word */ - msg->bufferOffset += xdr_getpos (&xdr); - len = msg->bufferOffset; + /* Update length word to include payload*/ + len = msg->bufferOffset = xdr_getpos (&xdr); if (xdr_setpos (&xdr, 0) == 0) goto xdr_error;