Browse Source

Update nonce.c

auth: fixed issue when during registration nonce expired, after backwards time shift
vance-od 10 years ago
parent
commit
063e32a8fe
1 changed files with 7 additions and 1 deletions
  1. 7 1
      modules/auth/nonce.c

+ 7 - 1
modules/auth/nonce.c

@@ -357,7 +357,13 @@ int check_nonce(auth_body_t* auth, str* secret1, str* secret2,
 		   different length (for example because of different auth.
 		   different length (for example because of different auth.
 		   checks)..  Therefore we force credentials to be rebuilt by UAC
 		   checks)..  Therefore we force credentials to be rebuilt by UAC
 		   without prompting for password */
 		   without prompting for password */
-		return 4;
+		/* if current time is less than start time, reset the start time 
+            	(e.g., after start, the system clock was set in the past) */ 
+        	t=time(0); 
+        	if (t < up_since) 
+			up_since = t;
+		if (since < t)
+			return 4; 
 	}
 	}
 	t=time(0);
 	t=time(0);
 	if (unlikely((since > t) && ((since-t) > nonce_auth_max_drift) )){
 	if (unlikely((since > t) && ((since-t) > nonce_auth_max_drift) )){