Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improved filtering of input for fuzzershell for modes other than generic. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
025e8370dde2918b66683f8d7fa9c7d2 |
User & Date: | drh 2015-04-22 13:16:46.644 |
Context
2015-04-23
| ||
11:52 | Fix a problem causing the fts3 integrity-check to fail if run inside a transaction. (check-in: 3b925189a7 user: dan tags: trunk) | |
2015-04-22
| ||
14:41 | Prototype for an sqlite3_db_log() interface. (Leaf check-in: 658e20f554 user: drh tags: sqlite3_db_log) | |
13:16 | Improved filtering of input for fuzzershell for modes other than generic. (check-in: 025e8370dd user: drh tags: trunk) | |
11:16 | Change the printf, strftime, and glob modes of fuzzershell so that they reject all inputs that do not start with a string literal followed by a comma. This helps the fuzzer focus in on the kinds of behavior those modes are intended to test. (check-in: 1cceefa7c6 user: drh tags: trunk) | |
Changes
Changes to tool/fuzzershell.c.
︙ | ︙ | |||
347 348 349 350 351 352 353 354 355 356 357 358 359 360 | void *pLook = 0; /* Allocated lookaside space */ void *pPCache = 0; /* Allocated storage for pcache */ void *pScratch = 0; /* Allocated storage for scratch */ int doAutovac = 0; /* True for --autovacuum */ char *zSql; /* SQL to run */ char *zToFree = 0; /* Call sqlite3_free() on this afte running zSql */ int iMode = FZMODE_Generic; /* Operating mode */ g.zArgv0 = argv[0]; for(i=1; i<argc; i++){ const char *z = argv[i]; if( z[0]=='-' ){ z++; | > | 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | void *pLook = 0; /* Allocated lookaside space */ void *pPCache = 0; /* Allocated storage for pcache */ void *pScratch = 0; /* Allocated storage for scratch */ int doAutovac = 0; /* True for --autovacuum */ char *zSql; /* SQL to run */ char *zToFree = 0; /* Call sqlite3_free() on this afte running zSql */ int iMode = FZMODE_Generic; /* Operating mode */ const char *zCkGlob = 0; /* Inputs must match this glob */ g.zArgv0 = argv[0]; for(i=1; i<argc; i++){ const char *z = argv[i]; if( z[0]=='-' ){ z++; |
︙ | ︙ | |||
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 | i += 2; }else if( strcmp(z,"mode")==0 ){ if( i>=argc-1 ) abendError("missing argument on %s", argv[i]); z = argv[++i]; if( strcmp(z,"generic")==0 ){ iMode = FZMODE_Printf; }else if( strcmp(z, "glob")==0 ){ iMode = FZMODE_Glob; }else if( strcmp(z, "printf")==0 ){ iMode = FZMODE_Printf; }else if( strcmp(z, "strftime")==0 ){ iMode = FZMODE_Strftime; }else{ abendError("unknown --mode: %s", z); } }else if( strcmp(z,"pagesize")==0 ){ if( i>=argc-1 ) abendError("missing argument on %s", argv[i]); pageSize = integerValue(argv[++i]); | > > > > | 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 | i += 2; }else if( strcmp(z,"mode")==0 ){ if( i>=argc-1 ) abendError("missing argument on %s", argv[i]); z = argv[++i]; if( strcmp(z,"generic")==0 ){ iMode = FZMODE_Printf; zCkGlob = 0; }else if( strcmp(z, "glob")==0 ){ iMode = FZMODE_Glob; zCkGlob = "'*','*'"; }else if( strcmp(z, "printf")==0 ){ iMode = FZMODE_Printf; zCkGlob = "'*',*"; }else if( strcmp(z, "strftime")==0 ){ iMode = FZMODE_Strftime; zCkGlob = "'*',*"; }else{ abendError("unknown --mode: %s", z); } }else if( strcmp(z,"pagesize")==0 ){ if( i>=argc-1 ) abendError("missing argument on %s", argv[i]); pageSize = integerValue(argv[++i]); |
︙ | ︙ | |||
483 484 485 486 487 488 489 | printf("%.*s\n", (int)(z-&zIn[i]), &zIn[i]); i += (int)(z-&zIn[i]); } } for(iNext=i; iNext<nIn && strncmp(&zIn[iNext],"/****<",6)!=0; iNext++){} cSaved = zIn[iNext]; zIn[iNext] = 0; | | | 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 | printf("%.*s\n", (int)(z-&zIn[i]), &zIn[i]); i += (int)(z-&zIn[i]); } } for(iNext=i; iNext<nIn && strncmp(&zIn[iNext],"/****<",6)!=0; iNext++){} cSaved = zIn[iNext]; zIn[iNext] = 0; if( zCkGlob && sqlite3_strglob(zCkGlob,&zIn[i])!=0 ){ zIn[iNext] = cSaved; continue; } rc = sqlite3_open_v2( "main.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_MEMORY, 0); |
︙ | ︙ |