On 05/13/2010 02:05 AM, Jiri Denemark wrote: > --- > src/remote/remote_driver.c | 19 ++++++++++++++++++- > 1 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c > index 990bfce..80977a3 100644 > --- a/src/remote/remote_driver.c > +++ b/src/remote/remote_driver.c > @@ -2849,17 +2849,34 @@ remoteDomainMigratePrepare2 (virConnectPtr dconn, > goto done; > > if (ret.cookie.cookie_len > 0) { > + if (!cookie || !cookielen) { > + remoteError(VIR_ERR_INTERNAL_ERROR, "%s", > + _("caller ignores cookie or cookielen")); For a moment, I wondered if VIR_ERR_INVALID_ARG would be any better here, but decided you probably did the right thing since this is implementation rather than a direct public API. > + goto error; > + } > *cookie = ret.cookie.cookie_val; /* Caller frees. */ > *cookielen = ret.cookie.cookie_len; > } > - if (ret.uri_out) > + if (ret.uri_out) { > + if (!uri_out) { > + remoteError(VIR_ERR_INTERNAL_ERROR, "%s", > + _("caller ignores uri_out")); > + goto error; > + } > *uri_out = *ret.uri_out; /* Caller frees. */ > + } > > rv = 0; > > done: > remoteDriverUnlock(priv); > return rv; > +error: > + if (ret.cookie.cookie_len) > + VIR_FREE(ret.cookie.cookie_val); > + if (ret.uri_out) > + VIR_FREE(*ret.uri_out); > + goto done; > } ACK; looks nicer than v1 for diagnosing a logic bug in the caller, rather than papering over it. -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list