From 654c584b5892233205f6edb5481022cb175cb6d3 Mon Sep 17 00:00:00 2001 From: fpeters <> Date: Wed, 8 Sep 2004 15:09:27 +0000 Subject: [PATCH] looks like it might work --- src/db_postgresql.c | 7 +++++-- src/idpc.h | 2 +- src/single_sign_on.c | 7 ++++--- src/soap_end_point.c | 6 ++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/db_postgresql.c b/src/db_postgresql.c index 02b8026..5205b0a 100644 --- a/src/db_postgresql.c +++ b/src/db_postgresql.c @@ -189,13 +189,16 @@ int db_save_name_identifier(char *name_identifier, char *user_id) return 0; } -int db_save_assertion(char *assertion_artifact, char *response_dump) +int db_save_assertion(char *assertion_artifact, LassoAssertion *assertion) { PGresult *res; const char *params[2]; + char *assertion_dump; + + assertion_dump = lasso_node_export(LASSO_NODE(assertion)); params[0] = assertion_artifact; - params[1] = response_dump; + params[1] = assertion_dump; res = PQexecParams(sqlconn, "INSERT INTO assertions VALUES ($1, $2)", diff --git a/src/idpc.h b/src/idpc.h index c18dbf0..680ff2b 100644 --- a/src/idpc.h +++ b/src/idpc.h @@ -55,7 +55,7 @@ int db_get_dumps(char *user_id, char **user_dump, char **session_dump); int db_save_identity(char *user_id, char *identity_dump); int db_save_session(char *user_id, char *session_dump); int db_save_name_identifier(char *name_identifier, char *user_id); -int db_save_assertion(char *assertion_artifact, char *response_dump); +int db_save_assertion(char *assertion_artifact, LassoAssertion *assertion); int db_get_response_dump(char *assertion, char **response_dump); int db_remove_response_dump(char *assertion); int db_get_user_id(char *name_identifier, char **user_id); diff --git a/src/single_sign_on.c b/src/single_sign_on.c index 2967e30..5183d09 100644 --- a/src/single_sign_on.c +++ b/src/single_sign_on.c @@ -305,9 +305,10 @@ int single_sign_on() if (login->protocolProfile == lassoLoginProtocolProfileBrwsArt) { - rc = db_save_assertion( - login->assertionArtifact, - login->response_dump); + LassoAssertion *my_ass; + /* won't be freed; missing lasso_assertion_destroy */ + my_ass = lasso_login_get_assertion(login); + rc = db_save_assertion(login->assertionArtifact, my_ass); if (rc) { lasso_login_destroy(login); lasso_server_destroy(server); diff --git a/src/soap_end_point.c b/src/soap_end_point.c index 9967b18..16dba80 100644 --- a/src/soap_end_point.c +++ b/src/soap_end_point.c @@ -66,6 +66,12 @@ char* req_login(LassoServer *server, char *soap_msg) lasso_login_destroy(login); return NULL; } + rc = lasso_login_set_assertion_from_dump(login, response_dump); + if (rc) { + fprintf(stderr, "set_assertion_from_dump failed\n"); + lasso_login_destroy(login); + return NULL; + } rc = db_remove_response_dump(login->assertionArtifact); if (rc) { fprintf(stderr, "db_remove_response_dump failed\n");