mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
daemon: Remove 4kb stack allocation of security label
This commit is contained in:
parent
36deff0499
commit
76f0ae3261
@ -1607,7 +1607,7 @@ remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSE
|
|||||||
remote_domain_get_security_label_ret *ret)
|
remote_domain_get_security_label_ret *ret)
|
||||||
{
|
{
|
||||||
virDomainPtr dom;
|
virDomainPtr dom;
|
||||||
virSecurityLabel seclabel;
|
virSecurityLabelPtr seclabel;
|
||||||
|
|
||||||
dom = get_nonnull_domain(conn, args->dom);
|
dom = get_nonnull_domain(conn, args->dom);
|
||||||
if (dom == NULL) {
|
if (dom == NULL) {
|
||||||
@ -1615,22 +1615,30 @@ remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSE
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&seclabel, 0, sizeof seclabel);
|
if (VIR_ALLOC(seclabel) < 0) {
|
||||||
if (virDomainGetSecurityLabel(dom, &seclabel) == -1) {
|
|
||||||
remoteDispatchConnError(rerr, conn);
|
|
||||||
virDomainFree(dom);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret->label.label_len = strlen(seclabel.label) + 1;
|
|
||||||
if (VIR_ALLOC_N(ret->label.label_val, ret->label.label_len) < 0) {
|
|
||||||
virDomainFree(dom);
|
virDomainFree(dom);
|
||||||
remoteDispatchOOMError(rerr);
|
remoteDispatchOOMError(rerr);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
strcpy(ret->label.label_val, seclabel.label);
|
|
||||||
ret->enforcing = seclabel.enforcing;
|
if (virDomainGetSecurityLabel(dom, seclabel) == -1) {
|
||||||
|
remoteDispatchConnError(rerr, conn);
|
||||||
|
virDomainFree(dom);
|
||||||
|
VIR_FREE(seclabel);
|
||||||
|
return -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;
|
||||||
virDomainFree(dom);
|
virDomainFree(dom);
|
||||||
|
VIR_FREE(seclabel);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user