diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-04-23 17:10:05 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-04-23 17:10:05 +0000 |
| commit | e7a598832bcfdd302a3be99a3112e355e465ae9c (patch) | |
| tree | 7d2b4c0d49f8efebe136cef70b3d2e561347f7be | |
| parent | beee8a05c9fde87dbf801d81dc7c4764fe50c03b (diff) | |
* add bad argument handling in lasso_provider_* functions
| -rw-r--r-- | lasso/id-ff/provider.c | 18 | ||||
| -rw-r--r-- | lasso/id-ff/provider.h | 1 |
2 files changed, 17 insertions, 2 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index e17ff813..73b47a18 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -76,6 +76,7 @@ lasso_provider_get_assertion_consumer_service_url(LassoProvider *provider, const char *sid = (char*)service_id; char *name; + g_return_val_if_fail(provider, NULL); if (sid == NULL) sid = provider->private_data->default_assertion_consumer; @@ -108,6 +109,7 @@ lasso_provider_get_metadata_one(LassoProvider *provider, const char *name) GList *l; GHashTable *descriptor; + g_return_val_if_fail(provider, NULL); descriptor = provider->private_data->SPDescriptor; /* default to SP */ if (provider->role == LASSO_PROVIDER_ROLE_IDP) descriptor = provider->private_data->IDPDescriptor; @@ -138,6 +140,7 @@ lasso_provider_get_metadata_list(LassoProvider *provider, const char *name) { GHashTable *descriptor; + g_return_val_if_fail(provider, NULL); descriptor = provider->private_data->SPDescriptor; /* default to SP */ if (provider->role == LASSO_PROVIDER_ROLE_IDP) descriptor = provider->private_data->IDPDescriptor; @@ -167,6 +170,7 @@ lasso_provider_get_first_http_method(LassoProvider *provider, GList *t1, *t2 = NULL; gboolean found; + g_return_val_if_fail(provider, LASSO_HTTP_METHOD_NONE); if (provider->private_data->conformance == LASSO_PROTOCOL_SAML_2_0) { return lasso_saml20_provider_get_first_http_method( provider, remote_provider, protocol_type); @@ -234,6 +238,7 @@ lasso_provider_accept_http_method(LassoProvider *provider, LassoProvider *remote LassoProviderRole initiating_role; char *protocol_profile; + g_return_val_if_fail(provider, FALSE); // Be conservative if (provider->private_data->conformance == LASSO_PROTOCOL_SAML_2_0) { return lasso_saml20_provider_accept_http_method( provider, remote_provider, protocol_type, @@ -288,6 +293,7 @@ lasso_provider_has_protocol_profile(LassoProvider *provider, { GList *supported; + g_return_val_if_fail(provider, FALSE); // Be conservative supported = lasso_provider_get_metadata_list( provider, protocol_md_nodename[protocol_type]); @@ -310,6 +316,7 @@ lasso_provider_get_base64_succinct_id(LassoProvider *provider) { char *succinct_id, *base64_succinct_id; + g_return_val_if_fail(provider, NULL); succinct_id = lasso_sha1(provider->ProviderID); base64_succinct_id = (char*)xmlSecBase64Encode((xmlChar*)succinct_id, 20, 0); xmlFree(succinct_id); @@ -329,6 +336,7 @@ lasso_provider_get_base64_succinct_id(LassoProvider *provider) xmlNode* lasso_provider_get_organization(LassoProvider *provider) { + g_return_val_if_fail(provider, NULL); if (provider->private_data->organization) { return xmlCopyNode(provider->private_data->organization, 1); } else { @@ -656,6 +664,7 @@ lasso_provider_get_type() LassoProtocolConformance lasso_provider_get_protocol_conformance(LassoProvider *provider) { + g_return_val_if_fail(provider, LASSO_PROTOCOL_NONE); return provider->private_data->conformance; } @@ -670,6 +679,7 @@ lasso_provider_load_metadata(LassoProvider *provider, const gchar *metadata) const char *xpath_sp = "/md:EntityDescriptor/md:SPDescriptor"; const char *xpath_organization = "/md:EntityDescriptor/md:Organization"; + g_return_val_if_fail(provider, FALSE); doc = xmlParseFile(metadata); if (doc == NULL) return FALSE; @@ -826,6 +836,7 @@ lasso_provider_load_public_key(LassoProvider *provider, LassoPublicKeyType publi }; int i; + g_return_val_if_fail(provider, FALSE); if (public_key_type == LASSO_PUBLIC_KEY_SIGNING) { public_key = provider->public_key; key_descriptor = provider->private_data->signing_key_descriptor; @@ -949,7 +960,8 @@ lasso_provider_new_from_dump(const gchar *dump) return provider; } -int lasso_provider_verify_signature(LassoProvider *provider, +int +lasso_provider_verify_signature(LassoProvider *provider, const char *message, const char *id_attr_name, LassoMessageFormat format) { /* this duplicates some code from lasso_node_init_from_message; @@ -964,9 +976,9 @@ int lasso_provider_verify_signature(LassoProvider *provider, xmlXPathContext *xpathCtx = NULL; xmlXPathObject *xpathObj = NULL; + g_return_val_if_fail(provider, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); msg = (char*)message; - if (message == NULL) return LASSO_PROFILE_ERROR_INVALID_MSG; @@ -1113,6 +1125,7 @@ int lasso_provider_verify_signature(LassoProvider *provider, void lasso_provider_set_encryption_mode(LassoProvider *provider, LassoEncryptionMode encryption_mode) { + g_return_if_fail(provider); provider->private_data->encryption_mode = encryption_mode; } @@ -1127,5 +1140,6 @@ void lasso_provider_set_encryption_sym_key_type(LassoProvider *provider, LassoEncryptionSymKeyType encryption_sym_key_type) { + g_return_if_fail(provider); provider->private_data->encryption_sym_key_type = encryption_sym_key_type; } diff --git a/lasso/id-ff/provider.h b/lasso/id-ff/provider.h index acb26464..bbe6d7d6 100644 --- a/lasso/id-ff/provider.h +++ b/lasso/id-ff/provider.h @@ -124,6 +124,7 @@ typedef enum { * Provider protocol conformance. **/ typedef enum { + LASSO_PROTOCOL_NONE = -1, LASSO_PROTOCOL_LIBERTY_1_0, LASSO_PROTOCOL_LIBERTY_1_1, LASSO_PROTOCOL_LIBERTY_1_2, |
