commit c0bb909f0a54c7cb41e0e9e0fb936ed8fa79fdc5
parent f473462465f0a4044fb8f37e1064dc08fb45fc17
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Sun, 1 May 2022 16:57:58 +0300
check_nonce_nc(): additionally improved readability, fixed comments
Diffstat:
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
@@ -619,18 +619,21 @@ check_nonce_nc (struct MHD_Connection *connection,
ret = false; /* Nonce does not match, fail */
else if (nc == nn->nc)
ret = false; /* 'nc' was already used */
- /* Note that we use 64 here, as we do not store the
- bit for 'nn->nc' itself in 'nn->nmask' */
- else if ( (nc < nn->nc) &&
- (nc + 64 >= nn->nc) &&
- (0 == ((1LLU << (nn->nc - nc - 1)) & nn->nmask)) )
+ else if (nc < nn->nc)
{
- /* Out-of-order nonce, but within 64-bit bitmask, set bit */
- nn->nmask |= (1LLU << (nn->nc - nc - 1));
- ret = true;
+ /* Note that we use 64 here, as we do not store the
+ bit for 'nn->nc' itself in 'nn->nmask' */
+ if ( (nc + 64 >= nn->nc) &&
+ (0 == ((1LLU << (nn->nc - nc - 1)) & nn->nmask)) )
+ {
+ /* Out-of-order nonce, but within 64-bit bitmask, set bit */
+ nn->nmask |= (1LLU << (nn->nc - nc - 1));
+ ret = true;
+ }
+ else
+ /* 'nc' was already used or too old (more then 64 values ago) */
+ ret = false;
}
- else if (nc < nn->nc)
- ret = false; /* 'nc' does not match, fail */
else
{
/* 'nc' is larger, shift bitmask and bump limit */