[libvirt] [PATCH 12/20] daemon: Remove 4kb stack allocation of security label
Daniel P. Berrange
berrange at redhat.com
Mon Apr 4 10:35:53 UTC 2011
On Sun, Apr 03, 2011 at 11:21:25AM +0200, Matthias Bolte wrote:
> ---
> daemon/remote.c | 20 ++++++++++++++------
> 1 files changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/daemon/remote.c b/daemon/remote.c
> index 1700c2d..dd85ef1 100644
> --- a/daemon/remote.c
> +++ b/daemon/remote.c
> @@ -1607,7 +1607,7 @@ remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSE
> remote_domain_get_security_label_ret *ret)
> {
> virDomainPtr dom;
> - virSecurityLabel seclabel;
> + virSecurityLabelPtr seclabel;
>
> dom = get_nonnull_domain(conn, args->dom);
> if (dom == NULL) {
> @@ -1615,22 +1615,30 @@ remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSE
> return -1;
> }
>
> - memset(&seclabel, 0, sizeof seclabel);
> - if (virDomainGetSecurityLabel(dom, &seclabel) == -1) {
> + if (VIR_ALLOC(seclabel) < 0) {
> + virDomainFree(dom);
> + remoteDispatchOOMError(rerr);
> + return -1;
> + }
> +
> + if (virDomainGetSecurityLabel(dom, seclabel) == -1) {
> remoteDispatchConnError(rerr, conn);
> virDomainFree(dom);
> + VIR_FREE(seclabel);
> return -1;
> }
>
> - ret->label.label_len = strlen(seclabel.label) + 1;
> + ret->label.label_len = strlen(seclabel->label) + 1;
> if (VIR_ALLOC_N(ret->label.label_val, ret->label.label_len) < 0) {
> virDomainFree(dom);
> + VIR_FREE(seclabel);
> remoteDispatchOOMError(rerr);
> return -1;
> }
> - strcpy(ret->label.label_val, seclabel.label);
> - ret->enforcing = seclabel.enforcing;
> + strcpy(ret->label.label_val, seclabel->label);
> + ret->enforcing = seclabel->enforcing;
> virDomainFree(dom);
> + VIR_FREE(seclabel);
>
> return 0;
> }
ACK
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list