diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-05-01 16:57:58 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-05-01 16:57:58 +0300 |
commit | c0bb909f0a54c7cb41e0e9e0fb936ed8fa79fdc5 (patch) | |
tree | 6e76657e1c7745666c87df73a7adf486da10e36a /src/microhttpd/digestauth.c | |
parent | f473462465f0a4044fb8f37e1064dc08fb45fc17 (diff) | |
download | libmicrohttpd-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.c | 23 |
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 */ |