diff options
| -rw-r--r-- | lasso/errors.c | 10 | ||||
| -rw-r--r-- | lasso/errors.h | 8 | ||||
| -rw-r--r-- | lasso/id-wsf/data_service.c | 18 | ||||
| -rw-r--r-- | lasso/id-wsf/discovery.c | 22 | ||||
| -rw-r--r-- | swig/Lasso.i | 11 |
5 files changed, 39 insertions, 30 deletions
diff --git a/lasso/errors.c b/lasso/errors.c index 4ba42228..403aedc7 100644 --- a/lasso/errors.c +++ b/lasso/errors.c @@ -127,6 +127,12 @@ lasso_strerror(int error_code) return "Missing status code"; case LASSO_PROFILE_ERROR_MISSING_ARTIFACT: return "Missing SAML artifact"; + case LASSO_PROFILE_ERROR_MISSING_RESOURCE_OFFERING: + return "Missing ressource offering"; + case LASSO_PROFILE_ERROR_MISSING_SERVICE_DESCRIPTION: + return "Missing service description"; + case LASSO_PROFILE_ERROR_MISSING_SERVICE_TYPE: + return "Missing service type"; case LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ: return "An object type provided as parameter "\ @@ -149,8 +155,8 @@ lasso_strerror(int error_code) case LASSO_LOGIN_ERROR_REQUEST_DENIED: return "Request denied"; - case LASSO_SOAP_FAULT_REDIRECT_REQUEST: - return "Redirect request from Attribute Provider"; + case LASSO_SOAP_FAULT_REDIRECT_REQUEST: + return "Redirect request from Attribute Provider"; default: return "Error"; diff --git a/lasso/errors.h b/lasso/errors.h index d23d031d..e6007d10 100644 --- a/lasso/errors.h +++ b/lasso/errors.h @@ -86,6 +86,9 @@ #define LASSO_PROFILE_ERROR_MISSING_RESPONSE -421 #define LASSO_PROFILE_ERROR_MISSING_STATUS_CODE -422 #define LASSO_PROFILE_ERROR_MISSING_ARTIFACT -423 +#define LASSO_PROFILE_ERROR_MISSING_RESOURCE_OFFERING 424 +#define LASSO_PROFILE_ERROR_MISSING_SERVICE_DESCRIPTION 425 +#define LASSO_PROFILE_ERROR_MISSING_SERVICE_TYPE 426 /* functions/methods parameters checking */ #define LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ -501 @@ -107,8 +110,3 @@ /* Soap */ #define LASSO_SOAP_FAULT_REDIRECT_REQUEST 800 - -/* ID-WSF Discovery */ -#define LASSO_DISCO_ERROR_MISSING_RESOURCE_OFFERING 900 -#define LASSO_DISCO_ERROR_MISSING_SERVICE_DESCRIPTION 901 - diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c index 7288f57e..db30d7dd 100644 --- a/lasso/id-wsf/data_service.c +++ b/lasso/id-wsf/data_service.c @@ -176,14 +176,22 @@ lasso_data_service_init_query(LassoDataService *service, const char *select, query = lasso_dst_query_new(NULL); } profile->request = LASSO_NODE(query); - + + if (service == NULL || service->private_data == NULL + || service->private_data->offering == NULL) { + return LASSO_PROFILE_ERROR_MISSING_RESOURCE_OFFERING; + } offering = service->private_data->offering; + if (offering->ServiceInstance == NULL + || offering->ServiceInstance->ServiceType == NULL) { + return LASSO_PROFILE_ERROR_MISSING_SERVICE_TYPE; + } query->hrefServiceType = g_strdup(offering->ServiceInstance->ServiceType); query->prefixServiceType = lasso_get_prefix_for_dst_service_href( query->hrefServiceType); if (query->prefixServiceType == NULL) { - return LASSO_ERROR_UNDEFINED; + return LASSO_PROFILE_ERROR_MISSING_SERVICE_TYPE; } if (offering->ResourceID) { @@ -197,13 +205,13 @@ lasso_data_service_init_query(LassoDataService *service, const char *select, lasso_wsf_profile_init_soap_request(LASSO_WSF_PROFILE(service), LASSO_NODE(query)); - if (!security_mech_id) + if (!security_mech_id) { description = LASSO_DISCO_DESCRIPTION(offering->ServiceInstance->Description->data); - else { + } else { description = lasso_discovery_get_description_auto(offering, security_mech_id); } if (!description) - return -1; + return LASSO_ERROR_UNDEFINED; lasso_wsf_profile_set_description(LASSO_WSF_PROFILE(service), description); if (description->Endpoint != NULL) { diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c index 259de0c9..e873b6dd 100644 --- a/lasso/id-wsf/discovery.c +++ b/lasso/id-wsf/discovery.c @@ -482,16 +482,18 @@ lasso_discovery_init_insert(LassoDiscovery *discovery, /* get discovery service resource id from principal assertion */ offering = lasso_discovery_get_resource_offering_auto(discovery, LASSO_DISCO_HREF); if (offering == NULL) { - return LASSO_DISCO_ERROR_MISSING_RESOURCE_OFFERING; + return LASSO_PROFILE_ERROR_MISSING_RESOURCE_OFFERING; } - if (security_mech_id) + if (security_mech_id) { description = lasso_discovery_get_description_auto(offering, security_mech_id); - else + } else { description = LASSO_DISCO_DESCRIPTION(offering->ServiceInstance->Description->data); - if (!description) - return LASSO_DISCO_ERROR_MISSING_SERVICE_DESCRIPTION; + } + if (!description) { + return LASSO_PROFILE_ERROR_MISSING_SERVICE_DESCRIPTION; + } lasso_wsf_profile_set_description(LASSO_WSF_PROFILE(discovery), description); - + /* XXX: EncryptedResourceID support */ modify->ResourceID = g_object_ref(offering->ResourceID); lasso_node_destroy(LASSO_NODE(offering)); @@ -530,7 +532,7 @@ lasso_discovery_init_remove(LassoDiscovery *discovery, const char *entry_id) /* get discovery service resource id from principal assertion */ offering = lasso_discovery_get_resource_offering_auto(discovery, LASSO_DISCO_HREF); if (offering == NULL) { - return -1; + return LASSO_ERROR_UNDEFINED; } description = lasso_discovery_get_description_auto(offering, LASSO_SECURITY_MECH_NULL); @@ -571,7 +573,7 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech /* get discovery service resource id from principal assertion */ offering = lasso_discovery_get_resource_offering_auto(discovery, LASSO_DISCO_HREF); if (offering == NULL) - return -1; + return LASSO_ERROR_UNDEFINED; if (!security_mech_id) description = LASSO_DISCO_DESCRIPTION(offering->ServiceInstance->Description->data); @@ -579,7 +581,7 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech description = lasso_discovery_get_description_auto(offering, security_mech_id); } if (!description) - return -1; + return LASSO_ERROR_UNDEFINED; lasso_wsf_profile_set_description(LASSO_WSF_PROFILE(discovery), description); @@ -677,7 +679,7 @@ lasso_discovery_build_modify_response_msg(LassoDiscovery *discovery) LASSO_WSF_PROFILE(discovery)->identity, entry->entryID) == NULL) { /* FIXME: Return a better code error. */ - return -1; + return LASSO_ERROR_UNDEFINED; } } diff --git a/swig/Lasso.i b/swig/Lasso.i index 276b6e67..3469cc20 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -1076,7 +1076,9 @@ typedef enum { %rename(PROFILE_ERROR_BAD_SESSION_DUMP) LASSO_PROFILE_ERROR_BAD_SESSION_DUMP; %rename(PROFILE_ERROR_MISSING_RESPONSE) LASSO_PROFILE_ERROR_MISSING_RESPONSE; %rename(PROFILE_ERROR_MISSING_STATUS_CODE) LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; -%rename(PROFILE_ERROR_MISSING_ARTIFACT) LASSO_PROFILE_ERROR_MISSING_ARTIFACT; +%rename(PROFILE_ERROR_MISSING_RESOURCE_OFFERING) LASSO_PROFILE_ERROR_MISSING_RESOURCE_OFFERING; +%rename(PROFILE_ERROR_MISSING_SERVICE_DESCRIPTION) LASSO_PROFILE_ERROR_MISSING_SERVICE_DESCRIPTION; +%rename(PROFILE_ERROR_MISSING_SERVICE_TYPE) LASSO_PROFILE_ERROR_MISSING_SERVICE_TYPE; #endif /* functions/methods parameters checking */ @@ -1108,13 +1110,6 @@ typedef enum { %rename(SOAP_FAULT_REDIRECT_REQUEST) LASSO_SOAP_FAULT_REDIRECT_REQUEST; #endif -/* ID-WSF Discovery */ -#ifndef SWIGPHP4 -%rename(DISCO_ERROR_MISSING_RESOURCE_OFFERING) LASSO_DISCO_ERROR_MISSING_RESOURCE_OFFERING; -%rename(DISCO_ERROR_MISSING_SERVICE_DESCRIPTION) LASSO_DISCO_ERROR_MISSING_SERVICE_DESCRIPTION; -#endif - - #ifndef SWIGPHP4 %rename(strerror) lasso_strerror; #endif |
