mirror of
https://github.com/libvirt/libvirt.git
synced 2026-10-02 12:20:06 -05:00
vz: Check ACLs before parsing the whole domain XML
Utilise the new virDomainDefIDsParseString() for that. Fixes: CVE-2025-12748 Reported-by: Святослав Терешин <s.tereshin@fobos-nt.ru> Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
1 parent
a6dcfee896
commit
7285c10a7e
1 file changed
+12
-6
+12
-6
@@ -789,6 +789,15 @@ vzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
|
||||
if (flags & VIR_DOMAIN_DEFINE_VALIDATE)
|
||||
parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA;
|
||||
|
||||
/* Avoid parsing the whole domain definition for ACL checks */
|
||||
if (!(def = virDomainDefIDsParseString(xml, driver->xmlopt, parse_flags)))
|
||||
return NULL;
|
||||
|
||||
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
||||
return NULL;
|
||||
|
||||
g_clear_pointer(&def, virDomainDefFree);
|
||||
|
||||
if ((def = virDomainDefParseString(xml, driver->xmlopt,
|
||||
NULL, parse_flags)) == NULL)
|
||||
goto cleanup;
|
||||
@@ -796,9 +805,6 @@ vzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
|
||||
if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
||||
goto cleanup;
|
||||
|
||||
dom = virDomainObjListFindByUUID(driver->domains, def->uuid);
|
||||
if (dom == NULL) {
|
||||
virResetLastError();
|
||||
@@ -2966,9 +2972,9 @@ vzDomainMigratePrepare3Params(virConnectPtr conn,
|
||||
| VZ_MIGRATION_COOKIE_DOMAIN_NAME) < 0)
|
||||
return -1;
|
||||
|
||||
if (!(def = virDomainDefParseString(dom_xml, driver->xmlopt,
|
||||
NULL,
|
||||
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||
/* Avoid parsing the whole domain definition for ACL checks */
|
||||
if (!(def = virDomainDefIDsParseString(dom_xml, driver->xmlopt,
|
||||
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||
return -1;
|
||||
|
||||
if (dname) {
|
||||
|
||||
Reference in new issue
Block a user