int ret = -1;
int maxparams = 0;
bool readonly;
- const char *sock_addr = NULL;
+ char *sock_addr = NULL;
const char *attr = NULL;
virTypedParameterPtr tmpparams = NULL;
virIdentityPtr identity = NULL;
cleanup:
virObjectUnref(identity);
+ VIR_FREE(sock_addr);
return ret;
}
int
virNetServerClientGetInfo(virNetServerClientPtr client,
- bool *readonly, const char **sock_addr,
+ bool *readonly, char **sock_addr,
virIdentityPtr *identity)
{
int ret = -1;
+ const char *addr;
virObjectLock(client);
*readonly = client->readonly;
- if (!(*sock_addr = virNetServerClientRemoteAddrStringURI(client))) {
+ if (!(addr = virNetServerClientRemoteAddrStringURI(client))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No network socket associated with client"));
goto cleanup;
}
+ if (VIR_STRDUP(*sock_addr, addr) < 0)
+ goto cleanup;
+
if (!client->identity) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No identity information available for client"));
int virNetServerClientGetTransport(virNetServerClientPtr client);
int virNetServerClientGetInfo(virNetServerClientPtr client,
- bool *readonly, const char **sock_addr,
+ bool *readonly, char **sock_addr,
virIdentityPtr *identity);
#endif /* __VIR_NET_SERVER_CLIENT_H__ */