Fossil SCM
Fixes to the capability reduction on subrepositories.
Commit
4b545a8a0243c1072e0e05c578dbaf7ea9bd16aa
Parent
c477b2470f552fe…
1 file changed
+2
-6
+2
-6
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -504,11 +504,10 @@ | ||
| 504 | 504 | |
| 505 | 505 | /* |
| 506 | 506 | ** Memory of settings |
| 507 | 507 | */ |
| 508 | 508 | static int login_anon_once = 1; |
| 509 | -static char login_settings[26]; | |
| 510 | 509 | |
| 511 | 510 | /* |
| 512 | 511 | ** Add the default privileges of users "nobody" and "anonymous" as appropriate |
| 513 | 512 | ** for the user g.zLogin. |
| 514 | 513 | */ |
| @@ -533,13 +532,10 @@ | ||
| 533 | 532 | void login_set_capabilities(const char *zCap){ |
| 534 | 533 | static char *zDev = 0; |
| 535 | 534 | static char *zUser = 0; |
| 536 | 535 | int i; |
| 537 | 536 | for(i=0; zCap[i]; i++){ |
| 538 | - int c = zCap[i]; | |
| 539 | - if( c<'a' || c>'z' ) continue; | |
| 540 | - login_settings[c-'a'] = 1; | |
| 541 | 537 | switch( zCap[i] ){ |
| 542 | 538 | case 's': g.okSetup = 1; /* Fall thru into Admin */ |
| 543 | 539 | case 'a': g.okAdmin = g.okRdTkt = g.okWrTkt = g.okZip = |
| 544 | 540 | g.okRdWiki = g.okWrWiki = g.okNewWiki = |
| 545 | 541 | g.okApndWiki = g.okHistory = g.okClone = |
| @@ -674,11 +670,12 @@ | ||
| 674 | 670 | fossil_free(z); |
| 675 | 671 | } |
| 676 | 672 | seen['u'-'a'] = 0; |
| 677 | 673 | seen['v'-'a'] = 0; |
| 678 | 674 | for(i=0; i<sizeof(seen); i++){ |
| 679 | - if( seen[i] && login_settings[i] ) zNew[nNew++] = i+'a'; | |
| 675 | + char c = i+'a'; | |
| 676 | + if( seen[i] && login_has_capability(&c,1) ) zNew[nNew++] = i+'a'; | |
| 680 | 677 | } |
| 681 | 678 | zNew[nNew] = 0; |
| 682 | 679 | |
| 683 | 680 | /* Turn off all capabilities */ |
| 684 | 681 | g.okSetup = 0; |
| @@ -701,11 +698,10 @@ | ||
| 701 | 698 | g.okAttach = 0; |
| 702 | 699 | g.okTktFmt = 0; |
| 703 | 700 | g.okRdAddr = 0; |
| 704 | 701 | g.okZip = 0; |
| 705 | 702 | g.okPrivate = 0; |
| 706 | - memset(login_settings, 0, sizeof(login_settings)); | |
| 707 | 703 | |
| 708 | 704 | /* Set the reduced capabilities */ |
| 709 | 705 | login_set_capabilities(zNew); |
| 710 | 706 | login_anon_once = 1; |
| 711 | 707 | login_set_anon_nobody_capabilities(); |
| 712 | 708 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -504,11 +504,10 @@ | |
| 504 | |
| 505 | /* |
| 506 | ** Memory of settings |
| 507 | */ |
| 508 | static int login_anon_once = 1; |
| 509 | static char login_settings[26]; |
| 510 | |
| 511 | /* |
| 512 | ** Add the default privileges of users "nobody" and "anonymous" as appropriate |
| 513 | ** for the user g.zLogin. |
| 514 | */ |
| @@ -533,13 +532,10 @@ | |
| 533 | void login_set_capabilities(const char *zCap){ |
| 534 | static char *zDev = 0; |
| 535 | static char *zUser = 0; |
| 536 | int i; |
| 537 | for(i=0; zCap[i]; i++){ |
| 538 | int c = zCap[i]; |
| 539 | if( c<'a' || c>'z' ) continue; |
| 540 | login_settings[c-'a'] = 1; |
| 541 | switch( zCap[i] ){ |
| 542 | case 's': g.okSetup = 1; /* Fall thru into Admin */ |
| 543 | case 'a': g.okAdmin = g.okRdTkt = g.okWrTkt = g.okZip = |
| 544 | g.okRdWiki = g.okWrWiki = g.okNewWiki = |
| 545 | g.okApndWiki = g.okHistory = g.okClone = |
| @@ -674,11 +670,12 @@ | |
| 674 | fossil_free(z); |
| 675 | } |
| 676 | seen['u'-'a'] = 0; |
| 677 | seen['v'-'a'] = 0; |
| 678 | for(i=0; i<sizeof(seen); i++){ |
| 679 | if( seen[i] && login_settings[i] ) zNew[nNew++] = i+'a'; |
| 680 | } |
| 681 | zNew[nNew] = 0; |
| 682 | |
| 683 | /* Turn off all capabilities */ |
| 684 | g.okSetup = 0; |
| @@ -701,11 +698,10 @@ | |
| 701 | g.okAttach = 0; |
| 702 | g.okTktFmt = 0; |
| 703 | g.okRdAddr = 0; |
| 704 | g.okZip = 0; |
| 705 | g.okPrivate = 0; |
| 706 | memset(login_settings, 0, sizeof(login_settings)); |
| 707 | |
| 708 | /* Set the reduced capabilities */ |
| 709 | login_set_capabilities(zNew); |
| 710 | login_anon_once = 1; |
| 711 | login_set_anon_nobody_capabilities(); |
| 712 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -504,11 +504,10 @@ | |
| 504 | |
| 505 | /* |
| 506 | ** Memory of settings |
| 507 | */ |
| 508 | static int login_anon_once = 1; |
| 509 | |
| 510 | /* |
| 511 | ** Add the default privileges of users "nobody" and "anonymous" as appropriate |
| 512 | ** for the user g.zLogin. |
| 513 | */ |
| @@ -533,13 +532,10 @@ | |
| 532 | void login_set_capabilities(const char *zCap){ |
| 533 | static char *zDev = 0; |
| 534 | static char *zUser = 0; |
| 535 | int i; |
| 536 | for(i=0; zCap[i]; i++){ |
| 537 | switch( zCap[i] ){ |
| 538 | case 's': g.okSetup = 1; /* Fall thru into Admin */ |
| 539 | case 'a': g.okAdmin = g.okRdTkt = g.okWrTkt = g.okZip = |
| 540 | g.okRdWiki = g.okWrWiki = g.okNewWiki = |
| 541 | g.okApndWiki = g.okHistory = g.okClone = |
| @@ -674,11 +670,12 @@ | |
| 670 | fossil_free(z); |
| 671 | } |
| 672 | seen['u'-'a'] = 0; |
| 673 | seen['v'-'a'] = 0; |
| 674 | for(i=0; i<sizeof(seen); i++){ |
| 675 | char c = i+'a'; |
| 676 | if( seen[i] && login_has_capability(&c,1) ) zNew[nNew++] = i+'a'; |
| 677 | } |
| 678 | zNew[nNew] = 0; |
| 679 | |
| 680 | /* Turn off all capabilities */ |
| 681 | g.okSetup = 0; |
| @@ -701,11 +698,10 @@ | |
| 698 | g.okAttach = 0; |
| 699 | g.okTktFmt = 0; |
| 700 | g.okRdAddr = 0; |
| 701 | g.okZip = 0; |
| 702 | g.okPrivate = 0; |
| 703 | |
| 704 | /* Set the reduced capabilities */ |
| 705 | login_set_capabilities(zNew); |
| 706 | login_anon_once = 1; |
| 707 | login_set_anon_nobody_capabilities(); |
| 708 |