summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/login.c24
-rw-r--r--lasso/saml-2.0/login.c30
2 files changed, 33 insertions, 21 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 8c4b9ae7..b192dfd6 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -1824,16 +1824,16 @@ lasso_login_must_authenticate(LassoLogin *login)
char *class_ref;
GList *class_refs = request->RequestAuthnContext->AuthnContextClassRef;
GList *t1, *t2;
- int compa;
+ int compa = -1;
if (comparison == NULL || strcmp(comparison, "exact") == 0) {
compa = 0;
} else if (strcmp(comparison, "minimum") == 0) {
message(G_LOG_LEVEL_CRITICAL, "'minimum' comparison is not implemented");
- compa = 0;
+ compa = 1;
} else if (strcmp(comparison, "better") == 0) {
message(G_LOG_LEVEL_CRITICAL, "'better' comparison is not implemented");
- compa = 0;
+ compa = 2;
}
if (class_refs) {
@@ -1867,15 +1867,21 @@ lasso_login_must_authenticate(LassoLogin *login)
method = LASSO_LIB_AUTHN_CONTEXT_CLASS_REF_PASSWORD;
}
- if (compa == 0) { /* exact */
+ switch (compa) {
+ case 1: /* minimum */
+ /* XXX: implement 'minimum' comparison */
+ case 2: /* better */
+ /* XXX: implement 'better' comparison */
+ case 0: /* exact */
if (strcmp(method, class_ref) == 0) {
matched = TRUE;
- break;
}
- } else if (compa == 1) { /* minimum */
- /* XXX: implement 'minimum' comparison */
- } else if (compa == 2) { /* better */
- /* XXX: implement 'better' comparison */
+ break;
+ default: /* inever reached */
+ break;
+ }
+ if (matched == TRUE) {
+ break;
}
}
}
diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c
index e3d0ff72..b5256ceb 100644
--- a/lasso/saml-2.0/login.c
+++ b/lasso/saml-2.0/login.c
@@ -405,19 +405,19 @@ lasso_saml20_login_must_authenticate(LassoLogin *login)
GList *class_refs = request->RequestedAuthnContext->AuthnContextClassRef;
char *class_ref;
GList *t1, *t2;
- int compa;
+ int compa = -1;
if (comparison == NULL || lasso_strisequal(comparison,"exact")) {
compa = 0;
} else if (lasso_strisequal(comparison,"minimum")) {
message(G_LOG_LEVEL_CRITICAL, "'minimum' comparison is not implemented");
- compa = 0;
+ compa = 1;
} else if (lasso_strisequal(comparison,"better")) {
message(G_LOG_LEVEL_CRITICAL, "'better' comparison is not implemented");
- compa = 0;
+ compa = 2;
} else if (lasso_strisequal(comparison,"maximum")) {
message(G_LOG_LEVEL_CRITICAL, "'maximum' comparison is not implemented");
- compa = 0;
+ compa = 3;
}
if (class_refs) {
@@ -454,17 +454,23 @@ lasso_saml20_login_must_authenticate(LassoLogin *login)
method = as->AuthnContext->AuthnContextClassRef;
- if (compa == 0) { /* exact */
- if (lasso_strisequal(method,class_ref)) {
- matched = TRUE;
- break;
- }
- } else if (compa == 1) { /* minimum */
+ switch (compa) {
+ case 1: /* minimum */
/* XXX: implement 'minimum' comparison */
- } else if (compa == 2) { /* better */
+ case 2: /* better */
/* XXX: implement 'better' comparison */
- } else if (compa == 3) { /* maximum */
+ case 3: /* maximum */
/* XXX: implement 'maximum' comparison */
+ case 0: /* exact */
+ if (lasso_strisequal(method,class_ref)) {
+ matched = TRUE;
+ }
+ break;
+ default: /* never reached */
+ break;
+ }
+ if (matched == TRUE) {
+ break;
}
}
}