in src/omxmlsec/saml/query.c [898:953]
AXIS2_EXTERN int AXIS2_CALL saml_query_set_subject(saml_query_t* query, const axutil_env_t *env,
saml_subject_t *subject)
{
saml_subject_query_t *sub_q = NULL;
saml_authentication_query_t *authent_q;
saml_autho_decision_query_t *autho_de_q;
saml_attr_query_t *attr_q;
if(query)
{
if(query->type)
{
if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY))
{
sub_q = (saml_subject_query_t*)query->query;
if(sub_q)
{
if(sub_q->subject)
{
saml_subject_free(sub_q->subject, env);
}
sub_q->subject = subject;
}
}
if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY))
{
authent_q = (saml_authentication_query_t*)query->query;
if(authent_q->subject)
{
saml_subject_free(authent_q->subject, env);
}
authent_q->subject = subject;
}
if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY))
{
attr_q = (saml_attr_query_t*)query->query;
if(attr_q)
{
saml_subject_free(attr_q->subject, env);
}
attr_q->subject = subject;
}
if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY))
{
autho_de_q = (saml_autho_decision_query_t*)query->query;
if(autho_de_q)
{
saml_subject_free(autho_de_q->subject, env);
}
autho_de_q->subject = subject;
}
}
}
return AXIS2_SUCCESS;
}