secret_conf: add validation against schema in define

We need to validate the XML against schema if option '--validate'
was passed to the virsh command. This patch also includes
propagation of flags into the virSecretDefParse() function.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Kristina Hanicova 2021-08-20 14:30:38 +02:00 committed by Ján Tomko
parent 6589794a1f
commit 9d482a415b
3 changed files with 10 additions and 7 deletions

View File

@ -191,12 +191,14 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
static virSecretDef * static virSecretDef *
virSecretDefParse(const char *xmlStr, virSecretDefParse(const char *xmlStr,
const char *filename) const char *filename,
unsigned int flags)
{ {
g_autoptr(xmlDoc) xml = NULL; g_autoptr(xmlDoc) xml = NULL;
virSecretDef *ret = NULL; virSecretDef *ret = NULL;
if ((xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)"), NULL, false))) { if ((xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)"), "secret.rng",
flags & VIR_SECRET_DEFINE_VALIDATE))) {
ret = secretXMLParseNode(xml, xmlDocGetRootElement(xml)); ret = secretXMLParseNode(xml, xmlDocGetRootElement(xml));
} }
@ -204,15 +206,16 @@ virSecretDefParse(const char *xmlStr,
} }
virSecretDef * virSecretDef *
virSecretDefParseString(const char *xmlStr) virSecretDefParseString(const char *xmlStr,
unsigned int flags)
{ {
return virSecretDefParse(xmlStr, NULL); return virSecretDefParse(xmlStr, NULL, flags);
} }
virSecretDef * virSecretDef *
virSecretDefParseFile(const char *filename) virSecretDefParseFile(const char *filename)
{ {
return virSecretDefParse(NULL, filename); return virSecretDefParse(NULL, filename, 0);
} }
static int static int

View File

@ -35,7 +35,7 @@ struct _virSecretDef {
void virSecretDefFree(virSecretDef *def); void virSecretDefFree(virSecretDef *def);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSecretDef, virSecretDefFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSecretDef, virSecretDefFree);
virSecretDef *virSecretDefParseString(const char *xml); virSecretDef *virSecretDefParseString(const char *xml, unsigned int flags);
virSecretDef *virSecretDefParseFile(const char *filename); virSecretDef *virSecretDefParseFile(const char *filename);
char *virSecretDefFormat(const virSecretDef *def); char *virSecretDefFormat(const virSecretDef *def);

View File

@ -222,7 +222,7 @@ secretDefineXML(virConnectPtr conn,
virCheckFlags(0, NULL); virCheckFlags(0, NULL);
if (!(def = virSecretDefParseString(xml))) if (!(def = virSecretDefParseString(xml, 0)))
return NULL; return NULL;
if (virSecretDefineXMLEnsureACL(conn, def) < 0) if (virSecretDefineXMLEnsureACL(conn, def) < 0)