Module: sip-router Branch: master Commit: 7aea949e1d1101b87d4327a86f026e119cd0ae8b URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7aea949e...
Author: Andrei Pelinescu-Onciul andrei@iptel.org Committer: Andrei Pelinescu-Onciul andrei@iptel.org Date: Fri Oct 15 10:09:03 2010 +0200
auth: fix pool no. when both nc and otn are enabled
When both nonce_count and one_time_nonce are enabled in the same time, the pool number was corrupted leading to crashes.
Reported-by: Alex Balashov abalashov evaristesys com
---
modules/auth/challenge.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/modules/auth/challenge.c b/modules/auth/challenge.c index 1e4dfe6..9bd4ce0 100644 --- a/modules/auth/challenge.c +++ b/modules/auth/challenge.c @@ -89,6 +89,7 @@ int get_challenge_hf(struct sip_msg* msg, int stale, str* realm, #if defined USE_NC || defined USE_OT_NONCE unsigned int n_id; unsigned char pool; + unsigned char pool_flags; #endif
if(!ahf) @@ -170,23 +171,26 @@ int get_challenge_hf(struct sip_msg* msg, int stale, str* realm, if (nc_enabled || otn_enabled){ pool=nid_get_pool(); n_id=nid_inc(pool); + pool_flags=0; #ifdef USE_NC if (nc_enabled){ nc_new(n_id, pool); - pool|= NF_VALID_NC_ID; + pool_flags|= NF_VALID_NC_ID; } #endif #ifdef USE_OT_NONCE if (otn_enabled){ otn_new(n_id, pool); - pool|= NF_VALID_OT_ID; + pool_flags|= NF_VALID_OT_ID; } #endif }else{ pool=0; + pool_flags=0; n_id=0; } - if (calc_nonce(p, &l, cfg, t, t + nonce_expire, n_id, pool, + if (calc_nonce(p, &l, cfg, t, t + nonce_expire, n_id, + pool | pool_flags, &secret1, &secret2, msg) != 0) #else /* USE_NC || USE_OT_NONCE*/ if (calc_nonce(p, &l, cfg, t, t + nonce_expire,