---
tools/virsh.c | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index 19e3449..99da054 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -2052,7 +2052,7 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd)
virDomainInfo info;
virDomainPtr dom;
virSecurityModel secmodel;
- virSecurityLabel seclabel;
+ virSecurityLabelPtr seclabel;
int persistent = 0;
int ret = TRUE, autostart;
unsigned int id;
@@ -2138,15 +2138,22 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd)
vshPrint(ctl, "%-15s %s\n", _("Security DOI:"),
secmodel.doi);
/* Security labels are only valid for active domains */
- memset(&seclabel, 0, sizeof seclabel);
- if (virDomainGetSecurityLabel(dom, &seclabel) == -1) {
+ if (VIR_ALLOC(seclabel) < 0) {
virDomainFree(dom);
return FALSE;
+ }
+
+ if (virDomainGetSecurityLabel(dom, seclabel) == -1) {
+ virDomainFree(dom);
+ VIR_FREE(seclabel);
+ return FALSE;
} else {
- if (seclabel.label[0] != '\0')
+ if (seclabel->label[0] != '\0')
vshPrint(ctl, "%-15s %s (%s)\n", _("Security
label:"),
- seclabel.label, seclabel.enforcing ? "enforcing" :
"permissive");
+ seclabel->label, seclabel->enforcing ?
"enforcing" : "permissive");
}
+
+ VIR_FREE(seclabel);
}
}
virDomainFree(dom);
@@ -12141,7 +12148,7 @@ vshOpenLogFile(vshControl *ctl)
static void
vshOutputLogFile(vshControl *ctl, int log_level, const char *msg_format, va_list ap)
{
- char msg_buf[MSG_BUFFER];
+ char *msg_buf;
const char *lvl = "";
struct timeval stTimeval;
struct tm *stTm;
@@ -12149,6 +12156,8 @@ vshOutputLogFile(vshControl *ctl, int log_level, const char
*msg_format, va_list
if (ctl->log_fd == -1)
return;
+ msg_buf = vshMalloc(ctl, MSG_BUFFER);
+
/**
* create log format
*
@@ -12199,6 +12208,8 @@ vshOutputLogFile(vshControl *ctl, int log_level, const char
*msg_format, va_list
vshCloseLogFile(ctl);
vshError(ctl, "%s", _("failed to write the log file"));
}
+
+ VIR_FREE(msg_buf);
}
/**
--
1.7.0.4