Fossil SCM

Allow upper or lower case letters for the captcha code. Also, recognize "O" as a "0". Ticket [b142647bfa04a]

drh 2012-12-01 03:38 trunk
Commit 7f56910f0e244e25962a135448715f050719da75
1 file changed +11 -1
+11 -1
--- src/captcha.c
+++ src/captcha.c
@@ -467,19 +467,29 @@
467467
*/
468468
int captcha_is_correct(void){
469469
const char *zSeed;
470470
const char *zEntered;
471471
const char *zDecode;
472
+ char z[30];
473
+ int i;
472474
if( !captcha_needed() ){
473475
return 1; /* No captcha needed */
474476
}
475477
zSeed = P("captchaseed");
476478
if( zSeed==0 ) return 0;
477479
zEntered = P("captcha");
478480
if( zEntered==0 || strlen(zEntered)!=8 ) return 0;
479481
zDecode = captcha_decode((unsigned int)atoi(zSeed));
480
- if( strcmp(zDecode,zEntered)!=0 ) return 0;
482
+ assert( strlen(zDecode)==8 );
483
+ if( strlen(zEntered)!=8 ) return 0;
484
+ for(i=0; i<8; i++){
485
+ char c = zEntered[i];
486
+ if( c>='A' && c<='F' ) c += 'a' - 'A';
487
+ if( c=='O' ) c = '0';
488
+ z[i] = c;
489
+ }
490
+ if( memcmp(zDecode,z,8)!=0 ) return 0;
481491
return 1;
482492
}
483493
484494
/*
485495
** Generate a captcha display together with the necessary hidden parameter
486496
--- src/captcha.c
+++ src/captcha.c
@@ -467,19 +467,29 @@
467 */
468 int captcha_is_correct(void){
469 const char *zSeed;
470 const char *zEntered;
471 const char *zDecode;
 
 
472 if( !captcha_needed() ){
473 return 1; /* No captcha needed */
474 }
475 zSeed = P("captchaseed");
476 if( zSeed==0 ) return 0;
477 zEntered = P("captcha");
478 if( zEntered==0 || strlen(zEntered)!=8 ) return 0;
479 zDecode = captcha_decode((unsigned int)atoi(zSeed));
480 if( strcmp(zDecode,zEntered)!=0 ) return 0;
 
 
 
 
 
 
 
 
481 return 1;
482 }
483
484 /*
485 ** Generate a captcha display together with the necessary hidden parameter
486
--- src/captcha.c
+++ src/captcha.c
@@ -467,19 +467,29 @@
467 */
468 int captcha_is_correct(void){
469 const char *zSeed;
470 const char *zEntered;
471 const char *zDecode;
472 char z[30];
473 int i;
474 if( !captcha_needed() ){
475 return 1; /* No captcha needed */
476 }
477 zSeed = P("captchaseed");
478 if( zSeed==0 ) return 0;
479 zEntered = P("captcha");
480 if( zEntered==0 || strlen(zEntered)!=8 ) return 0;
481 zDecode = captcha_decode((unsigned int)atoi(zSeed));
482 assert( strlen(zDecode)==8 );
483 if( strlen(zEntered)!=8 ) return 0;
484 for(i=0; i<8; i++){
485 char c = zEntered[i];
486 if( c>='A' && c<='F' ) c += 'a' - 'A';
487 if( c=='O' ) c = '0';
488 z[i] = c;
489 }
490 if( memcmp(zDecode,z,8)!=0 ) return 0;
491 return 1;
492 }
493
494 /*
495 ** Generate a captcha display together with the necessary hidden parameter
496

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button