summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/errors.c10
-rw-r--r--lasso/errors.h8
-rw-r--r--lasso/id-wsf/data_service.c18
-rw-r--r--lasso/id-wsf/discovery.c22
-rw-r--r--swig/Lasso.i11
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