@@ -231,12 +231,12 @@
231 231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Password && zPasswd && (zNew1 = P("n1"))!=0 && (zNew2 = P("n2"))!=0 ){
232 232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The user requests a password change */
233 233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSha1Pw = sha1_shared_secret(zPasswd, g.zLogin, 0);
234 234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_int(1, "SELECT 0 FROM user"
235 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE uid=%d"
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND (constant_time_eq(pw,%Q)=0"
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " OR constant_time_eq(pw,%Q)=0)",
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND (constant_time_cmp(pw,%Q)=0"
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " OR constant_time_cmp(pw,%Q)=0)",
238 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.userUid, zSha1Pw, zPasswd) ){
239 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sleep(1);
240 240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErrMsg =
241 241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p><span class="loginError">
242 242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ You entered an incorrect old password while attempting to change
@@ -310,11 +310,11 @@
310 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
uid = db_int(0,
311 311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT uid FROM user"
312 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE login=%Q"
313 313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND length(cap)>0 AND length(pw)>0"
314 314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND login NOT IN ('anonymous','nobody','developer','reader')"
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND (constant_time_eq(pw,%Q)=0 OR constant_time_eq(pw,%Q)=0)",
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND (constant_time_cmp(pw,%Q)=0 OR constant_time_cmp(pw,%Q)=0)",
316 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUsername, zSha1Pw, zPasswd
317 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
318 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( uid<=0 ){
319 319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sleep(1);
320 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErrMsg =
@@ -458,11 +458,11 @@
458 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
459 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
460 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL function for constant time comparison of two values.
461 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Sets result to 0 if two values are equal.
462 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void constant_time_eq_function(
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void constant_time_cmp_function(
464 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_context *context,
465 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int argc,
466 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
467 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
468 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *buf1, *buf2;
@@ -510,21 +510,21 @@
510 510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOtherRepo==0 ) return 0; /* No such peer repository */
511 511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
512 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_open(zOtherRepo, &pOther);
513 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
514 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_create_function(pOther,"now",0,SQLITE_ANY,0,db_now_function,0,0);
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_create_function(pOther, "constant_time_eq", 2, SQLITE_UTF8, 0,
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- constant_time_eq_function, 0, 0);
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(pOther, "constant_time_cmp", 2, SQLITE_UTF8, 0,
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ constant_time_cmp_function, 0, 0);
517 517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_busy_timeout(pOther, 5000);
518 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSQL = mprintf(
519 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT cexpire FROM user"
520 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE login=%Q"
521 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND ipaddr=%Q"
522 522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND length(cap)>0"
523 523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND length(pw)>0"
524 524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND cexpire>julianday('now')"
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND constant_time_eq(cookie,%Q)=0",
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND constant_time_cmp(cookie,%Q)=0",
526 526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zLogin, zRemoteAddr, zHash
527 527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
528 528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStmt = 0;
529 529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_prepare_v2(pOther, zSQL, -1, &pStmt, 0);
530 530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && sqlite3_step(pStmt)==SQLITE_ROW ){
@@ -562,11 +562,11 @@
562 562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE login=%Q"
563 563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND ipaddr=%Q"
564 564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND cexpire>julianday('now')"
565 565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND length(cap)>0"
566 566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND length(pw)>0"
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND constant_time_eq(cookie,%Q)=0",
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND constant_time_cmp(cookie,%Q)=0",
568 568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zLogin, zRemoteAddr, zCookie
569 569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
570 570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return uid;
571 571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
572 572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -586,12 +586,12 @@
586 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCap = 0; /* Capability string */
587 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
588 588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Only run this check once. */
589 589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.userUid!=0 ) return;
590 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_create_function(g.db, "constant_time_eq", 2, SQLITE_UTF8, 0,
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- constant_time_eq_function, 0, 0);
591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(g.db, "constant_time_cmp", 2, SQLITE_UTF8, 0,
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ constant_time_cmp_function, 0, 0);
593 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
594 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the HTTP connection is coming over 127.0.0.1 and if
595 595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** local login is disabled and if we are using HTTP and not HTTPS,
596 596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then there is no need to check user credentials.
597 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
598 598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!