summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-04-23 17:10:05 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-04-23 17:10:05 +0000
commite7a598832bcfdd302a3be99a3112e355e465ae9c (patch)
tree7d2b4c0d49f8efebe136cef70b3d2e561347f7be
parentbeee8a05c9fde87dbf801d81dc7c4764fe50c03b (diff)
* add bad argument handling in lasso_provider_* functions
-rw-r--r--lasso/id-ff/provider.c18
-rw-r--r--lasso/id-ff/provider.h1
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,