summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:05 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:05 +0000
commit7aa18e07b1f0395e363eb0e65beb6d74ffd4f473 (patch)
tree996d0efbe68b2368a08497a8ab8154fd0081628c
parentc9068fee45bf360f227cb0f18070821d6abfea11 (diff)
downloadlasso-7aa18e07b1f0395e363eb0e65beb6d74ffd4f473.tar.gz
lasso-7aa18e07b1f0395e363eb0e65beb6d74ffd4f473.tar.xz
lasso-7aa18e07b1f0395e363eb0e65beb6d74ffd4f473.zip
Fix leaks, change signature of lasso_provider_get_sp_name_qualifier, make it return a const char*
-rw-r--r--lasso/id-ff/federation.c2
-rw-r--r--lasso/id-ff/federation.h2
-rw-r--r--lasso/id-ff/profile.c2
-rw-r--r--lasso/id-ff/provider.c6
-rw-r--r--lasso/id-ff/provider.h2
-rw-r--r--lasso/saml-2.0/login.c11
-rw-r--r--lasso/xml/xml.c5
7 files changed, 16 insertions, 14 deletions
diff --git a/lasso/id-ff/federation.c b/lasso/id-ff/federation.c
index e64f2596..6e8ba3ed 100644
--- a/lasso/id-ff/federation.c
+++ b/lasso/id-ff/federation.c
@@ -278,7 +278,7 @@ lasso_federation_get_type()
* Return value: a newly created #LassoFederation
**/
LassoFederation*
-lasso_federation_new(gchar *remote_providerID)
+lasso_federation_new(const gchar *remote_providerID)
{
LassoFederation *federation;
diff --git a/lasso/id-ff/federation.h b/lasso/id-ff/federation.h
index bd372218..9842cfcd 100644
--- a/lasso/id-ff/federation.h
+++ b/lasso/id-ff/federation.h
@@ -65,7 +65,7 @@ struct _LassoFederationClass {
LASSO_EXPORT GType lasso_federation_get_type(void);
-LASSO_EXPORT LassoFederation* lasso_federation_new(gchar *remote_providerID);
+LASSO_EXPORT LassoFederation* lasso_federation_new(const gchar *remote_providerID);
LASSO_EXPORT void lasso_federation_build_local_name_identifier(LassoFederation *federation,
const gchar *nameQualifier, const gchar *format, const gchar *content);
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index 9eda9a99..d45d6584 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -100,7 +100,7 @@ lasso_profile_get_nameIdentifier(LassoProfile *profile)
{
LassoProvider *remote_provider;
LassoFederation *federation;
- char *name_id_sp_name_qualifier;
+ const char *name_id_sp_name_qualifier;
if (!LASSO_IS_PROFILE(profile)) {
return NULL;
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index 45551bb0..4ee76a5f 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -1363,10 +1363,10 @@ lasso_provider_get_default_name_id_format(const LassoProvider *provider)
* Return value:(transfer none): a private string or NULL. Do not keep a reference on this string or
* free it.
*/
-char*
+const char*
lasso_provider_get_sp_name_qualifier(LassoProvider *provider)
{
- char *sp_name_qualifier;
+ const char *sp_name_qualifier;
g_return_val_if_fail(LASSO_IS_PROVIDER(provider), NULL);
/* should not happen ! */
@@ -1379,7 +1379,7 @@ lasso_provider_get_sp_name_qualifier(LassoProvider *provider)
}
if (sp_name_qualifier) {
- return g_strdup(sp_name_qualifier);
+ return sp_name_qualifier;
} else {
return NULL;
}
diff --git a/lasso/id-ff/provider.h b/lasso/id-ff/provider.h
index a787a525..7cc8c9ed 100644
--- a/lasso/id-ff/provider.h
+++ b/lasso/id-ff/provider.h
@@ -210,7 +210,7 @@ LASSO_EXPORT void lasso_provider_set_encryption_sym_key_type(LassoProvider *prov
LASSO_EXPORT gchar* lasso_provider_get_default_name_id_format(const LassoProvider *provider);
-LASSO_EXPORT char* lasso_provider_get_sp_name_qualifier(LassoProvider *provider);
+LASSO_EXPORT const char* lasso_provider_get_sp_name_qualifier(LassoProvider *provider);
LASSO_EXPORT int lasso_provider_verify_single_node_signature (LassoProvider *provider,
LassoNode *node, const char *id_attr_name);
diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c
index a3bdc87c..68bec023 100644
--- a/lasso/saml-2.0/login.c
+++ b/lasso/saml-2.0/login.c
@@ -101,6 +101,7 @@ lasso_saml20_login_init_authn_request(LassoLogin *login, LassoHttpMethod http_me
request->Issuer->content);
cleanup:
+ lasso_release_gobject(request);
return rc;
}
@@ -268,6 +269,7 @@ lasso_saml20_login_process_authn_request_msg(LassoLogin *login, const char *auth
lasso_assign_string(response->InResponseTo, LASSO_SAMLP2_REQUEST_ABSTRACT(profile->request)->ID);
cleanup:
+ lasso_release_gobject(response);
return rc;
}
@@ -382,7 +384,7 @@ lasso_saml20_login_must_ask_for_consent_private(LassoLogin *login)
LassoSamlp2NameIDPolicy *name_id_policy;
char *consent;
LassoFederation *federation;
- char *name_id_sp_name_qualifier = NULL;
+ const char *name_id_sp_name_qualifier = NULL;
LassoProvider *remote_provider;
gboolean rc = TRUE;
@@ -436,7 +438,6 @@ lasso_saml20_login_must_ask_for_consent_private(LassoLogin *login)
goto_cleanup_with_rc (TRUE)
cleanup:
- lasso_release_string (name_id_sp_name_qualifier);
return rc;
}
@@ -505,7 +506,7 @@ lasso_saml20_login_process_federation(LassoLogin *login, gboolean is_consent_obt
LassoSamlp2NameIDPolicy *name_id_policy;
char *name_id_policy_format = NULL;
LassoFederation *federation;
- char *name_id_sp_name_qualifier = NULL;
+ const char *name_id_sp_name_qualifier = NULL;
LassoProvider *remote_provider;
int rc = 0;
@@ -583,20 +584,18 @@ lasso_saml20_login_process_federation(LassoLogin *login, gboolean is_consent_obt
lasso_assign_gobject(profile->nameIdentifier, federation->local_nameIdentifier);
cleanup:
- lasso_release_string (name_id_sp_name_qualifier);
return rc;
}
static LassoFederation*
_lasso_login_saml20_get_federation(LassoLogin *login) {
LassoFederation *federation = NULL;
- char *name_id_sp_name_qualifier;
+ const char *name_id_sp_name_qualifier = NULL;
name_id_sp_name_qualifier = lasso_provider_get_sp_name_qualifier(
lasso_server_get_provider(login->parent.server, login->parent.remote_providerID));
federation = lasso_identity_get_federation(login->parent.identity, name_id_sp_name_qualifier);
- lasso_release_string(name_id_sp_name_qualifier);
return federation;
}
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 236560db..ce84c680 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -497,6 +497,7 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
xmlNodePtr key_info_node2 = NULL;
xmlSecEncCtxPtr enc_ctx = NULL;
xmlSecTransformId xmlsec_encryption_sym_key_type;
+ xmlSecKey *duplicate = NULL;
if (encryption_public_key == NULL || !xmlSecKeyIsValid(encryption_public_key)) {
message(G_LOG_LEVEL_WARNING, "Invalid encryption key");
@@ -557,7 +558,9 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
/* add key to keys manager, from now on keys manager is responsible
* for destroying key
*/
- if (xmlSecCryptoAppDefaultKeysMngrAdoptKey(key_manager, encryption_public_key) < 0) {
+ duplicate = xmlSecKeyDuplicate(encryption_public_key);
+ if (xmlSecCryptoAppDefaultKeysMngrAdoptKey(key_manager, duplicate) < 0) {
+ lasso_release_sec_key(duplicate);
goto cleanup;
}