aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/digestauth.c
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-05-01 16:57:58 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-05-01 16:57:58 +0300
commitc0bb909f0a54c7cb41e0e9e0fb936ed8fa79fdc5 (patch)
tree6e76657e1c7745666c87df73a7adf486da10e36a /src/microhttpd/digestauth.c
parentf473462465f0a4044fb8f37e1064dc08fb45fc17 (diff)
downloadlibmicrohttpd-c0bb909f0a54c7cb41e0e9e0fb936ed8fa79fdc5.tar.gz
libmicrohttpd-c0bb909f0a54c7cb41e0e9e0fb936ed8fa79fdc5.zip
check_nonce_nc(): additionally improved readability, fixed comments
Diffstat (limited to 'src/microhttpd/digestauth.c')
-rw-r--r--src/microhttpd/digestauth.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
index 39496727..2bfbf95e 100644
--- a/src/microhttpd/digestauth.c
+++ b/src/microhttpd/digestauth.c
@@ -619,18 +619,21 @@ check_nonce_nc (struct MHD_Connection *connection,
619 ret = false; /* Nonce does not match, fail */ 619 ret = false; /* Nonce does not match, fail */
620 else if (nc == nn->nc) 620 else if (nc == nn->nc)
621 ret = false; /* 'nc' was already used */ 621 ret = false; /* 'nc' was already used */
622 /* Note that we use 64 here, as we do not store the 622 else if (nc < nn->nc)
623 bit for 'nn->nc' itself in 'nn->nmask' */
624 else if ( (nc < nn->nc) &&
625 (nc + 64 >= nn->nc) &&
626 (0 == ((1LLU << (nn->nc - nc - 1)) & nn->nmask)) )
627 { 623 {
628 /* Out-of-order nonce, but within 64-bit bitmask, set bit */ 624 /* Note that we use 64 here, as we do not store the
629 nn->nmask |= (1LLU << (nn->nc - nc - 1)); 625 bit for 'nn->nc' itself in 'nn->nmask' */
630 ret = true; 626 if ( (nc + 64 >= nn->nc) &&
627 (0 == ((1LLU << (nn->nc - nc - 1)) & nn->nmask)) )
628 {
629 /* Out-of-order nonce, but within 64-bit bitmask, set bit */
630 nn->nmask |= (1LLU << (nn->nc - nc - 1));
631 ret = true;
632 }
633 else
634 /* 'nc' was already used or too old (more then 64 values ago) */
635 ret = false;
631 } 636 }
632 else if (nc < nn->nc)
633 ret = false; /* 'nc' does not match, fail */
634 else 637 else
635 { 638 {
636 /* 'nc' is larger, shift bitmask and bump limit */ 639 /* 'nc' is larger, shift bitmask and bump limit */