summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/saml-2.0/assertion_query.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/lasso/saml-2.0/assertion_query.c b/lasso/saml-2.0/assertion_query.c
index 09a8245c..029d0e48 100644
--- a/lasso/saml-2.0/assertion_query.c
+++ b/lasso/saml-2.0/assertion_query.c
@@ -197,19 +197,21 @@ lasso_assertion_query_build_request_msg(LassoAssertionQuery *assertion_query)
LassoSamlp2SubjectQueryAbstract *subject_query;
subject_query = (LassoSamlp2SubjectQueryAbstract*)profile->request;
- if (subject_query->Subject &&
- (subject_query->Subject->NameID ||
- subject_query->Subject->EncryptedID)) {
+ if (! LASSO_IS_SAML2_SUBJECT(subject_query->Subject)) {
+ lasso_assign_new_gobject(subject_query->Subject,
+ lasso_saml2_subject_new());
+ }
+ if ( (! LASSO_IS_SAML2_NAME_ID(subject_query->Subject->NameID) &&
+ ! LASSO_IS_SAML2_ENCRYPTED_ELEMENT(subject_query->Subject->EncryptedID)))
+ {
nameID = (LassoSaml2NameID*)lasso_profile_get_nameIdentifier(profile);
if (! LASSO_IS_SAML2_NAME_ID(nameID))
return LASSO_PROFILE_ERROR_MISSING_NAME_IDENTIFIER;
- subject_query = LASSO_SAMLP2_SUBJECT_QUERY_ABSTRACT(profile->request);
- subject_query->Subject->NameID = g_object_ref(nameID);
+ lasso_assign_gobject(subject_query->Subject->NameID, nameID);
}
- if (! subject_query->Subject)
- return LASSO_PROFILE_ERROR_MISSING_SUBJECT;
- lasso_check_good_rc(lasso_saml20_profile_setup_subject(profile, subject_query->Subject));
+ lasso_check_good_rc(lasso_saml20_profile_setup_subject(profile,
+ subject_query->Subject));
} while(FALSE);
if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) {