@@ -790,10 +790,15 @@
790 790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int check_tail_hash(Blob *pHash, Blob *pMsg){
791 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob tail;
792 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
793 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_tail(pMsg, &tail);
794 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = hname_verify_hash(&tail, blob_buffer(pHash), blob_size(pHash));
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "check tail=%d hash=[%.*s]\ntail=<<%.*s>>\n", rc,
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(pHash), blob_str(pHash),
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(&tail), blob_str(&tail));
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
795 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&tail);
796 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc==HNAME_ERROR;
797 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
798 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
799 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -827,11 +832,11 @@
827 832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = -1;
828 833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zLogin = blob_terminate(pLogin);
829 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
defossilize(zLogin);
830 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
831 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(zLogin, "nobody")==0
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || fossil_strcmp(zLogin,"anonymous")==0
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || fossil_strcmp(zLogin, "anonymous")==0
833 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
834 839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0; /* Anybody is allowed to sync as "nobody" or "anonymous" */
835 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
836 841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(P("REMOTE_USER"), zLogin)==0
837 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& db_get_boolean("remote_user_ok",0) ){
@@ -854,10 +859,19 @@
854 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_copy(&combined, pNonce);
855 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&combined, blob_buffer(&pw), szPw);
856 861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sha1sum_blob(&combined, &hash);
857 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( blob_size(&hash)==40 );
858 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = blob_constant_time_cmp(&hash, pSig);
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr,
866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "check login rc=%d nonce=[%.*s] pSig=[%.*s] .hash=[%.*s]\n",
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc,
868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(pNonce), blob_str(pNonce),
869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(pSig), blob_str(pSig),
870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(&hash), blob_str(&hash));
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
859 873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&hash);
860 874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&combined);
861 875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=0 && szPw!=40 ){
862 876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this server stores cleartext passwords and the password did not
863 877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** match, then perhaps the client is sending SHA1 passwords. Try
@@ -1318,21 +1332,26 @@
1318 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pzUuidList = &zUuidList;
1319 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pnUuidList = &nUuidList;
1320 1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1321 1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.zLoginCard ){
1322 1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Login card received via HTTP header X-Fossil-Xfer-Login */
1323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_init(&xfer.line, g.zLoginCard, -1);
1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&xfer.line);
1338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(&xfer.line, g.zLoginCard, -1);
1324 1339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.nToken = blob_tokenize(&xfer.line, xfer.aToken,
1325 1340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
count(xfer.aToken));
1326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( xfer.nToken==4
1327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && blob_eq(&xfer.aToken[0], "login") ){
1328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*fprintf(stderr,"g.zLoginCard=%s nToken=%d\n", g.zLoginCard,
1329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- xfer.nToken);*/
1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto handle_login_card;
1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
1342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr,"%s:%d: g.zLoginCard=[%s]\nnToken=%d tok[0]=%s line=%s\n",
1343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ __FILE__, __LINE__, g.zLoginCard,
1344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xfer.nToken, xfer.nToken ? blob_str(&xfer.aToken[0]) : "<NULL>",
1345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(&xfer.line));
1346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1332 1347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free( g.zLoginCard );
1333 1348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zLoginCard = 0;
1349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( xfer.nToken==4
1350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && blob_eq(&xfer.aToken[0], "login") ){
1351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto handle_login_card;
1352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1334 1353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1335 1354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( blob_line(xfer.pIn, &xfer.line) ){
1336 1355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_buffer(&xfer.line)[0]=='#' ) continue;
1337 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_size(&xfer.line)==0 ) continue;
1338 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.nToken = blob_tokenize(&xfer.line, xfer.aToken, count(xfer.aToken));
@@ -1584,10 +1603,15 @@
1584 1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_reset_content();
1585 1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ error multiple\slogin\cards
1586 1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nErr++;
1587 1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
1588 1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "handle_login_card: aToken[2]=[%.*s]\n",
1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(&xfer.aToken[2]),
1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(&xfer.aToken[2]));
1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1589 1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( check_tail_hash(&xfer.aToken[2], xfer.pIn)
1590 1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| check_login(&xfer.aToken[1], &xfer.aToken[2], &xfer.aToken[3])
1591 1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1592 1616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_reset_content();
1593 1617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ error login\sfailed
1594 1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!