mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 18:05:20 +00:00
Convert Xen domain core dump driver methods to use virDomainDefPtr
Introduce use of a virDomainDefPtr in the domain coredump APIs to simplify introduction of ACL security checks. The virDomainPtr cannot be safely used, since the app may have supplied mis-matching name/uuid/id fields. eg the name points to domain X, while the uuid points to domain Y. Resolving the virDomainPtr to a virDomainDefPtr ensures a consistent name/uuid/id set. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
89d819f285
commit
fa9b8b046f
@ -1191,7 +1191,19 @@ xenUnifiedDomainRestore(virConnectPtr conn, const char *from)
|
||||
static int
|
||||
xenUnifiedDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags)
|
||||
{
|
||||
return xenDaemonDomainCoreDump(dom, to, flags);
|
||||
virDomainDefPtr def = NULL;
|
||||
int ret = -1;
|
||||
|
||||
virCheckFlags(0, -1);
|
||||
|
||||
if (!(def = xenGetDomainDefForDom(dom)))
|
||||
goto cleanup;
|
||||
|
||||
ret = xenDaemonDomainCoreDump(dom->conn, def, to, flags);
|
||||
|
||||
cleanup:
|
||||
virDomainDefFree(def);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -1446,7 +1446,8 @@ xenDaemonDomainSave(virConnectPtr conn,
|
||||
|
||||
/**
|
||||
* xenDaemonDomainCoreDump:
|
||||
* @domain: pointer to the Domain block
|
||||
* @conn: the connection object
|
||||
* @def: domain configuration
|
||||
* @filename: path for the output file
|
||||
* @flags: extra flags, currently unused
|
||||
*
|
||||
@ -1457,19 +1458,20 @@ xenDaemonDomainSave(virConnectPtr conn,
|
||||
* Returns 0 in case of success, -1 in case of error.
|
||||
*/
|
||||
int
|
||||
xenDaemonDomainCoreDump(virDomainPtr domain,
|
||||
xenDaemonDomainCoreDump(virConnectPtr conn,
|
||||
virDomainDefPtr def,
|
||||
const char *filename,
|
||||
unsigned int flags)
|
||||
{
|
||||
virCheckFlags(VIR_DUMP_LIVE | VIR_DUMP_CRASH, -1);
|
||||
|
||||
if (domain->id < 0) {
|
||||
if (def->id < 0) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID,
|
||||
_("Domain %s isn't running."), domain->name);
|
||||
_("Domain %s isn't running."), def->name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return xend_op(domain->conn, domain->name,
|
||||
return xend_op(conn, def->name,
|
||||
"op", "dump", "file", filename,
|
||||
"live", (flags & VIR_DUMP_LIVE ? "1" : "0"),
|
||||
"crash", (flags & VIR_DUMP_CRASH ? "1" : "0"),
|
||||
|
@ -102,7 +102,9 @@ int xenDaemonDomainDestroy(virConnectPtr conn, virDomainDefPtr def);
|
||||
int xenDaemonDomainSave(virConnectPtr conn,
|
||||
virDomainDefPtr def,
|
||||
const char *filename);
|
||||
int xenDaemonDomainCoreDump(virDomainPtr domain, const char *filename,
|
||||
int xenDaemonDomainCoreDump(virConnectPtr conn,
|
||||
virDomainDefPtr def,
|
||||
const char *filename,
|
||||
unsigned int flags);
|
||||
int xenDaemonDomainRestore(virConnectPtr conn, const char *filename);
|
||||
int xenDaemonDomainSetMemory(virConnectPtr conn,
|
||||
|
Loading…
x
Reference in New Issue
Block a user