diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-01-04 09:15:22 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-01-04 09:15:22 +0000 |
| commit | 277fc83eb1dfa1597b0efe1ef34b4a420e6c0924 (patch) | |
| tree | d0bd66d032d597bc4e67c9f994f59a0bae0b94ee | |
| parent | 29558f6a6a175b272679070fe8c8934639984151 (diff) | |
ID-WSF 2.0: in session.c, fix memory handling errors
| -rw-r--r-- | lasso/id-wsf-2.0/session.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lasso/id-wsf-2.0/session.c b/lasso/id-wsf-2.0/session.c index 75d68212..5848607c 100644 --- a/lasso/id-wsf-2.0/session.c +++ b/lasso/id-wsf-2.0/session.c @@ -72,17 +72,27 @@ lasso_session_add_endpoint_reference(LassoSession *session, LassoWsAddrEndpointR return 0; } +/** + * lasso_session_get_endpoint_reference: + * @session: a #LassoSession object + * @service_type: a string giving the service type. + * + * Return an endpoint reference for the given service type. + * + * Return value: a caller owned #LassoWsAddrEndpointReference object for the given service type if + * one is found, NULL otherwise. + */ LassoWsAddrEndpointReference* lasso_session_get_endpoint_reference(LassoSession *session, const gchar *service_type) { LassoWsAddrEndpointReference* epr; - g_return_val_if_fail(LASSO_IS_SESSION(session), NULL); - g_return_val_if_fail(service_type != NULL, NULL); + if (! LASSO_IS_SESSION(session) || service_type == NULL) + return NULL; epr = g_hash_table_lookup(session->private_data->eprs, service_type); if (LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) { - return LASSO_WSA_ENDPOINT_REFERENCE(epr); + return (LassoWsAddrEndpointReference*)g_object_ref(epr); } else { return NULL; } @@ -123,7 +133,7 @@ lasso_session_get_assertion_identity_token(LassoSession *session, const gchar *s if (security_context->Token != NULL) { sec_token = security_context->Token->data; if (LASSO_IS_SAML2_ASSERTION(sec_token->any)) { - lasso_assign_new_gobject(assertion, sec_token->any); + lasso_assign_gobject(assertion, sec_token->any); break; } } |
