challenger

OAuth 2.0-based authentication service that validates user can receive messages at a certain address
Log | Files | Refs | Submodules | README | LICENSE

commit 78492523949940ffefdbb42b49eba9d660205a25
parent 2e7bdb1e1ed2b3bc4685b906b62143c3de9c2e68
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sat, 17 Feb 2024 17:46:59 +0100

-fix

Diffstat:
Msrc/challengerdb/challenger_do_challenge_set_address_and_pin.sql | 4+++-
Msrc/challengerdb/challenger_do_validate_and_solve_pin.sql | 11++++++++++-
Msrc/challengerdb/pg_validate_solve_pin.c | 2+-
3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/challengerdb/challenger_do_challenge_set_address_and_pin.sql b/src/challengerdb/challenger_do_challenge_set_address_and_pin.sql @@ -70,11 +70,13 @@ IF ( (0 = my_status.address_attempts_left) AND (in_address != my_status.address) ) THEN out_address_refused=TRUE; + out_last_pin=0; RETURN; END IF; out_address_refused=FALSE; -IF (in_address != my_status.address) +IF ( (my_status.address IS NULL) OR + (in_address != my_status.address) ) THEN -- we are changing the address, update counters my_status.address_attempts_left = my_status.address_attempts_left - 1; diff --git a/src/challengerdb/challenger_do_validate_and_solve_pin.sql b/src/challengerdb/challenger_do_validate_and_solve_pin.sql @@ -53,14 +53,23 @@ out_address_attempts_left=my_status.address_attempts_left; out_pin_transmissions_left=my_status.pin_transmissions_left; out_client_redirect_uri=my_status.client_redirect_uri; +IF (my_status.last_pin IS NULL) +THEN + out_solved=FALSE; + out_auth_attempts_left=0; + out_client_redirect_uri=NULL; + RETURN; +END IF; + IF (0 = my_status.auth_attempts_left) THEN out_solved=FALSE; out_auth_attempts_left=0; out_client_redirect_uri=NULL; + RETURN; END IF; -out_solved = (last_pin = in_new_pin); +out_solved = (my_status.last_pin = in_new_pin); IF NOT out_solved THEN diff --git a/src/challengerdb/pg_validate_solve_pin.c b/src/challengerdb/pg_validate_solve_pin.c @@ -72,7 +72,7 @@ CH_PG_validate_solve_pin (void *cls, ",out_auth_attempts_left AS auth_attempts_left" ",out_pin_transmissions_left AS pin_transmissions_left" ",out_client_redirect_uri AS client_redirect_uri" - " FROM challenger_do_validate_solve_pin" + " FROM challenger_do_validate_and_solve_pin" " ($1,$2);"); qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn, "do_validate_solve_pin",