From 7994846dfaf74803d5619a7937cb794310eec33c Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 9 Oct 2012 16:52:27 +0200 Subject: [PATCH] xml-saml-2.0: ManageNameIDRequest must have a NameID --- .../saml-2.0/samlp2_manage_name_id_request.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lasso/xml/saml-2.0/samlp2_manage_name_id_request.c b/lasso/xml/saml-2.0/samlp2_manage_name_id_request.c index 207f1444..678c6201 100644 --- a/lasso/xml/saml-2.0/samlp2_manage_name_id_request.c +++ b/lasso/xml/saml-2.0/samlp2_manage_name_id_request.c @@ -78,12 +78,30 @@ static struct XmlSnippet schema_snippets[] = { /* instance and class init functions */ /*****************************************************************************/ +static LassoNodeClass *parent_class = NULL; + +static int +init_from_xml(LassoNode *node, xmlNode *xmlnode) +{ + int rc = 0; + LassoSamlp2ManageNameIDRequest *nid_request = (LassoSamlp2ManageNameIDRequest*)node; + + rc = parent_class->init_from_xml(node, xmlnode); + if ((nid_request->NameID != 0) + + (nid_request->EncryptedID != 0) != 1) { + error("samlp2:LogoutRequest needs one of BaseID, NameID or EncryptedID"); + rc = 1; + } + return rc; +} static void class_init(LassoSamlp2ManageNameIDRequestClass *klass) { LassoNodeClass *nclass = LASSO_NODE_CLASS(klass); + parent_class = g_type_class_peek_parent(klass); + klass->parent.parent.init_from_xml = init_from_xml; nclass->node_data = g_new0(LassoNodeClassData, 1); lasso_node_class_set_nodename(nclass, "ManageNameIDRequest"); lasso_node_class_set_ns(nclass, LASSO_SAML2_PROTOCOL_HREF, LASSO_SAML2_PROTOCOL_PREFIX);