summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-08-04 11:29:09 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-08-04 11:29:09 +0000
commiteba16b056117e2b2f97f2e4b8cbc94dcc24fcd67 (patch)
treeeefab2f7f1a2d13ad2eccacacb7d91d926768afb
parent6f79bbd1077d984818ed8d4315480fbc3aefbdae (diff)
downloadlasso-eba16b056117e2b2f97f2e4b8cbc94dcc24fcd67.tar.gz
lasso-eba16b056117e2b2f97f2e4b8cbc94dcc24fcd67.tar.xz
lasso-eba16b056117e2b2f97f2e4b8cbc94dcc24fcd67.zip
Fixed 3 bugs in lasso_login_new_from_dump()
-rw-r--r--lasso/id-ff/login.c48
1 files changed, 26 insertions, 22 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 87a66b5c..04aaa88b 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -1045,20 +1045,22 @@ lasso_login_new_from_dump(LassoServer *server,
LASSO_PROFILE(login)->request_type = atoi(type);
xmlFree(type);
- request_node = lasso_node_get_child(node_dump, "Request", NULL, NULL);
+ /* rebuild request */
+ if (LASSO_PROFILE(login)->request_type == lassoMessageTypeAuthnRequest) {
+ request_node = lasso_node_get_child(node_dump, "AuthnRequest", lassoLibHRef, NULL);
+ }
+ else if (LASSO_PROFILE(login)->request_type == lassoMessageTypeRequest) {
+ request_node = lasso_node_get_child(node_dump, "Request", lassoSamlProtocolHRef, NULL);
+ }
if (request_node != NULL) {
export = lasso_node_export(request_node);
- switch (LASSO_PROFILE(login)->request_type) {
- case lassoMessageTypeAuthnRequest:
+ if (LASSO_PROFILE(login)->request_type == lassoMessageTypeAuthnRequest) {
LASSO_PROFILE(login)->request = lasso_authn_request_new_from_export(export,
- lassoNodeExportTypeXml);
- break;
- case lassoMessageTypeRequest:
+ lassoNodeExportTypeXml);
+ }
+ else if (LASSO_PROFILE(login)->request_type == lassoMessageTypeRequest) {
LASSO_PROFILE(login)->request = lasso_request_new_from_export(export,
- lassoNodeExportTypeXml);
- break;
- default:
- break; /* XXX */
+ lassoNodeExportTypeXml);
}
xmlFree(export);
lasso_node_destroy(request_node);
@@ -1068,25 +1070,27 @@ lasso_login_new_from_dump(LassoServer *server,
LASSO_PROFILE(login)->response_type = atoi(type);
xmlFree(type);
- response_node = lasso_node_get_child(node_dump, "Response", NULL, NULL);
+ /* rebuild response */
+ if (LASSO_PROFILE(login)->response_type == lassoMessageTypeAuthnResponse) {
+ response_node = lasso_node_get_child(node_dump, "AuthnResponse", lassoLibHRef, NULL);
+ }
+ else if (LASSO_PROFILE(login)->response_type == lassoMessageTypeResponse) {
+ response_node = lasso_node_get_child(node_dump, "Response", lassoSamlProtocolHRef, NULL);
+ }
if (response_node != NULL) {
export = lasso_node_export(response_node);
- switch (LASSO_PROFILE(login)->response_type) {
- case lassoMessageTypeAuthnResponse:
+ if (LASSO_PROFILE(login)->response_type == lassoMessageTypeAuthnResponse) {
LASSO_PROFILE(login)->response = lasso_authn_response_new_from_export(export,
- lassoNodeExportTypeXml);
- break;
- case lassoMessageTypeRequest:
+ lassoNodeExportTypeXml);
+ }
+ else if (LASSO_PROFILE(login)->response_type == lassoMessageTypeResponse) {
LASSO_PROFILE(login)->response = lasso_response_new_from_export(export,
- lassoNodeExportTypeXml);
- break;
- default:
- break; /* XXX */
+ lassoNodeExportTypeXml);
}
xmlFree(export);
lasso_node_destroy(response_node);
}
-
+
type = lasso_node_get_child_content(node_dump, "ProviderType", NULL, NULL);
LASSO_PROFILE(login)->provider_type = atoi(type);
xmlFree(type);
@@ -1094,7 +1098,7 @@ lasso_login_new_from_dump(LassoServer *server,
/* login attributes */
protocolProfile = lasso_node_get_child_content(node_dump, "ProtocolProfile", NULL, NULL);
if (protocolProfile != NULL) {
- login->protocolProfile = atoi(protocolProfile);
+ login->protocolProfile = atoi(protocolProfile);
xmlFree(protocolProfile);
}
login->assertionArtifact = lasso_node_get_child_content(node_dump, "AssertionArtifact", NULL, NULL);