]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Minor fixes and enhancements to the SQLITE_ENABLE_API_ARMOR functionality.
authormistachkin <mistachkin@noemail.net>
Sat, 20 Dec 2014 21:14:14 +0000 (21:14 +0000)
committermistachkin <mistachkin@noemail.net>
Sat, 20 Dec 2014 21:14:14 +0000 (21:14 +0000)
FossilOrigin-Name: cb3e4219ac9560d2773b85453aafda54b7c9346f

Makefile.msc
manifest
manifest.uuid
src/complete.c
src/main.c
src/mutex_w32.c
src/table.c
src/tokenize.c

index 64175a0679a3994333bdba5a37127c265c13b7e0..3fc675ee4f8875b1b6d4919fb609d612657a8a06 100644 (file)
@@ -108,11 +108,12 @@ WIN32HEAP = 0
 # levels.  Currently, the recognized values for DEBUG are:
 #
 # 0 == NDEBUG: Disables assert() and other runtime diagnostics.
-# 1 == Disables NDEBUG and all optimizations and then enables PDBs.
-# 2 == SQLITE_DEBUG: Enables various diagnostics messages and code.
-# 3 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call.
-# 4 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros.
-# 5 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros.
+# 1 == SQLITE_ENABLE_API_ARMOR: extra attempts to detect misuse of the API.
+# 2 == Disables NDEBUG and all optimizations and then enables PDBs.
+# 3 == SQLITE_DEBUG: Enables various diagnostics messages and code.
+# 4 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call.
+# 5 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros.
+# 6 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros.
 #
 !IFNDEF DEBUG
 DEBUG = 0
@@ -280,7 +281,7 @@ RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP
 # MSVC runtime library.
 #
 !IF $(FOR_WINRT)!=0 || $(USE_CRT_DLL)!=0
-!IF $(DEBUG)>0
+!IF $(DEBUG)>1
 TCC = $(TCC) -MDd
 BCC = $(BCC) -MDd
 !ELSE
@@ -288,7 +289,7 @@ TCC = $(TCC) -MD
 BCC = $(BCC) -MD
 !ENDIF
 !ELSE
-!IF $(DEBUG)>0
+!IF $(DEBUG)>1
 TCC = $(TCC) -MTd
 BCC = $(BCC) -MTd
 !ELSE
@@ -313,7 +314,7 @@ RCC = $(RCC) -I$(TOP)\ext\rtree
 # options are necessary in order to allow debugging symbols to
 # work correctly with Visual Studio when using the amalgamation.
 #
-!IF $(DEBUG)>0
+!IF $(DEBUG)>1
 MKSQLITE3C_ARGS = --linemacros
 !ELSE
 MKSQLITE3C_ARGS =
@@ -329,17 +330,22 @@ BCC = $(BCC) -DNDEBUG
 RCC = $(RCC) -DNDEBUG
 !ENDIF
 
-!IF $(DEBUG)>1
+!IF $(DEBUG)>0
+TCC = $(TCC) -DSQLITE_ENABLE_API_ARMOR
+RCC = $(RCC) -DSQLITE_ENABLE_API_ARMOR
+!ENDIF
+
+!IF $(DEBUG)>2
 TCC = $(TCC) -DSQLITE_DEBUG
 RCC = $(RCC) -DSQLITE_DEBUG
 !ENDIF
 
-!IF $(DEBUG)>3
+!IF $(DEBUG)>4
 TCC = $(TCC) -DSQLITE_DEBUG_OS_TRACE=1
 RCC = $(RCC) -DSQLITE_DEBUG_OS_TRACE=1
 !ENDIF
 
-!IF $(DEBUG)>4
+!IF $(DEBUG)>5
 TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE
 RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE
 !ENDIF
@@ -371,7 +377,7 @@ RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1
 
 # Validate the heap on every call into the native Win32 heap subsystem?
 #
-!IF $(DEBUG)>2
+!IF $(DEBUG)>3
 TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
 RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
 !ENDIF
@@ -482,7 +488,7 @@ RCC = $(RCC) $(OPTS)
 
 # If compiling for debugging, add some defines.
 #
-!IF $(DEBUG)>0
+!IF $(DEBUG)>1
 TCC = $(TCC) -D_DEBUG
 BCC = $(BCC) -D_DEBUG
 RCC = $(RCC) -D_DEBUG
@@ -491,7 +497,7 @@ RCC = $(RCC) -D_DEBUG
 # If optimizations are enabled or disabled (either implicitly or
 # explicitly), add the necessary flags.
 #
-!IF $(DEBUG)>0 || $(OPTIMIZATIONS)==0
+!IF $(DEBUG)>1 || $(OPTIMIZATIONS)==0
 TCC = $(TCC) -Od
 BCC = $(BCC) -Od
 !ELSEIF $(OPTIMIZATIONS)>=3
@@ -507,7 +513,7 @@ BCC = $(BCC) -O1
 
 # If symbols are enabled (or compiling for debugging), enable PDBs.
 #
-!IF $(DEBUG)>0 || $(SYMBOLS)!=0
+!IF $(DEBUG)>1 || $(SYMBOLS)!=0
 TCC = $(TCC) -Zi
 BCC = $(BCC) -Zi
 !ENDIF
@@ -592,7 +598,7 @@ LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:ole32.lib
 
 # If either debugging or symbols are enabled, enable PDBs.
 #
-!IF $(DEBUG)>0 || $(SYMBOLS)!=0
+!IF $(DEBUG)>1 || $(SYMBOLS)!=0
 LDFLAGS = /DEBUG
 !ENDIF
 
index b4b2c48ca5cf6d318ddc2e10844ce6a0e494837d..6353c101f70686076c76d0e201b1c780e152c860 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Add\sthe\s"PRAGMA\sdata_version"\scommand\sfor\schecking\sto\ssee\sif\sa\sdatabase\shas\nbeen\smodified.
-D 2014-12-20T14:50:28.363
+C Minor\sfixes\sand\senhancements\sto\sthe\sSQLITE_ENABLE_API_ARMOR\sfunctionality.
+D 2014-12-20T21:14:14.374
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 6c4f961fa91d0b4fa121946a19f9e5eac2f2f809
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
-F Makefile.msc 10720782f88648bf2b5dcedf4c1524b067d43e47
+F Makefile.msc b363b90fe1bfc3b87d190f2f728a126c00d9ce09
 F Makefile.vxworks 034289efa9d591b04b1a73598623119c306cbba0
 F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8
 F VERSION d846487aff892625eb8e75960234e7285f0462fe
@@ -178,7 +178,7 @@ F src/btree.h 94277c1d30c0b75705974bcc8b0c05e79c03d474
 F src/btreeInt.h 3363e18fd76f69a27a870b25221b2345b3fd4d21
 F src/build.c 162d84e4833b03f9d07192ef06057b0226f6e543
 F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
-F src/complete.c c4ba6e0626bb94bc77a0861735f3382fcf7cc818
+F src/complete.c 198a0066ba60ab06fc00fba1998d870a4d575463
 F src/ctime.c df19848891c8a553c80e6f5a035e768280952d1a
 F src/date.c 93594514aae68de117ca4a2a0d6cc63eddf26744
 F src/delete.c 0750b1eb4d96cd3fb2c798599a3a7c85e92f1417
@@ -195,7 +195,7 @@ F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
 F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
 F src/lempar.c 7274c97d24bb46631e504332ccd3bd1b37841770
 F src/loadext.c 86bd4e2fccd520b748cba52492ab60c4a770f660
-F src/main.c 48e0410a661c629471ca9061d4153245cc9f853b
+F src/main.c ee498c89735ba7b581fbd58d2ad2e7679a0475b2
 F src/malloc.c 740db54387204c9a2eb67c6d98e68b08e9ef4eab
 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 F src/mem1.c faf615aafd8be74a71494dfa027c113ea5c6615f
@@ -207,7 +207,7 @@ F src/mutex.c 19bf9acba69ca2f367c3761080f8a9f0cf4670a8
 F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
 F src/mutex_noop.c f3f09fd7a2eb4287cfc799753ffc30380e7b71a1
 F src/mutex_unix.c 551e2f25f0fa0ee8fd7a43f50fc3d8be00e95dde
-F src/mutex_w32.c 06bfff9a3a83b53389a51a967643db3967032e1e
+F src/mutex_w32.c df48fe07562a45c5c927c45b8d5873a27f98bbb0
 F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
 F src/os.c 8fd25588eeba74068d41102d26810e216999b6c8
 F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
@@ -236,7 +236,7 @@ F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
 F src/sqliteInt.h d36da9a07130cae13cbfee0986bf20028cb01465
 F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
 F src/status.c 81712116e826b0089bb221b018929536b2b5406f
-F src/table.c f142bba7903e93ca8d113a5b8877a108ad1a27dc
+F src/table.c e7a09215315a978057fb42c640f890160dbcc45e
 F src/tclsqlite.c c6a21c64da1490e14d53cdc2062d1e2e57942622
 F src/test1.c 56e33bf6b1827c6ca7520c189131ddd778fb2267
 F src/test2.c 98049e51a17dc62606a99a9eb95ee477f9996712
@@ -285,7 +285,7 @@ F src/test_vfs.c f84075a388527892ff184988f43b69ce69b8083c
 F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 6de09362b657f19ba83e5fa521ee715787ce9fee
-F src/tokenize.c cc9016e5007fc5e76789079616d2f26741bcc689
+F src/tokenize.c e00458c9938072b0ea711c850b8dcf4ddcb5fe18
 F src/trigger.c 25571661fdeae8c7f975ff40ffec205520a3f92f
 F src/update.c 3c4ecc282accf12d39edb8d524cf089645e55a13
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
@@ -1234,8 +1234,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P da27a09d1d991583b59997f6cc67efa28ffd9d6a 44ee538374940c50198949f2cbb9213ba2375b6a
-R 6a9e76520ab206bdf596f781a2c88e65
-T +closed 44ee538374940c50198949f2cbb9213ba2375b6a
-U drh
-Z 9a9f87b94c56980445c2924a0392e880
+P de50f25ce3226fa4929b8236c72c88b739859d5f
+R c123b89e18af5f5ce6fabce3b17d012e
+U mistachkin
+Z 086c85a234ecd6ff163dc839ee55f963
index 59533b96a3f5e1afc1c2fc2475e05013cddd6814..31b35da2d7ec65295281651c0f9e5b97fc65c957 100644 (file)
@@ -1 +1 @@
-de50f25ce3226fa4929b8236c72c88b739859d5f
\ No newline at end of file
+cb3e4219ac9560d2773b85453aafda54b7c9346f
\ No newline at end of file
index c439cfe181f9cb4bdb2bbcf2eab5a3ddc5f0655d..f7a35cc6f37432395347c358fc33fc3cd93c5ac8 100644 (file)
@@ -105,13 +105,6 @@ int sqlite3_complete(const char *zSql){
   u8 state = 0;   /* Current state, using numbers defined in header comment */
   u8 token;       /* Value of the next token */
 
-#ifdef SQLITE_ENABLE_API_ARMOR
-  if( zSql==0 ){
-    (void)SQLITE_MISUSE_BKPT;
-    return 0;
-  }
-#endif
-
 #ifndef SQLITE_OMIT_TRIGGER
   /* A complex statement machine used to detect the end of a CREATE TRIGGER
   ** statement.  This is the normal case.
@@ -141,6 +134,13 @@ int sqlite3_complete(const char *zSql){
   };
 #endif /* SQLITE_OMIT_TRIGGER */
 
+#ifdef SQLITE_ENABLE_API_ARMOR
+  if( zSql==0 ){
+    (void)SQLITE_MISUSE_BKPT;
+    return 0;
+  }
+#endif
+
   while( *zSql ){
     switch( *zSql ){
       case ';': {  /* A semicolon */
index c89ccbd55d06a16260335dfb9792d8a5ef9c7e4b..76af9a2e955d6f123f0c8e1dc1a61efeab8c2322 100644 (file)
@@ -3659,13 +3659,14 @@ Btree *sqlite3DbNameToBtree(sqlite3 *db, const char *zDbName){
 ** connection.
 */
 const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){
+  Btree *pBt;
 #ifdef SQLITE_ENABLE_API_ARMOR
   if( !sqlite3SafetyCheckOk(db) ){
     (void)SQLITE_MISUSE_BKPT;
     return 0;
   }
 #endif
-  Btree *pBt = sqlite3DbNameToBtree(db, zDbName);
+  pBt = sqlite3DbNameToBtree(db, zDbName);
   return pBt ? sqlite3BtreeGetFilename(pBt) : 0;
 }
 
@@ -3674,12 +3675,13 @@ const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){
 ** no such database exists.
 */
 int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){
+  Btree *pBt;
 #ifdef SQLITE_ENABLE_API_ARMOR
   if( !sqlite3SafetyCheckOk(db) ){
     (void)SQLITE_MISUSE_BKPT;
     return -1;
   }
 #endif
-  Btree *pBt = sqlite3DbNameToBtree(db, zDbName);
+  pBt = sqlite3DbNameToBtree(db, zDbName);
   return pBt ? sqlite3BtreeIsReadonly(pBt) : -1;
 }
index da7d73f7c5896931836a7315cc444001fff24f2b..a799c86159e5db1592c62d67eb0cc3c4a7677c86 100644 (file)
@@ -209,6 +209,12 @@ static sqlite3_mutex *winMutexAlloc(int iType){
       break;
     }
     default: {
+#ifdef SQLITE_ENABLE_API_ARMOR
+      if( iType-2<0 || iType-2>=ArraySize(winMutex_staticMutexes) ){
+        (void)SQLITE_MISUSE_BKPT;
+        return 0;
+      }
+#endif
       assert( iType-2 >= 0 );
       assert( iType-2 < ArraySize(winMutex_staticMutexes) );
       assert( winMutex_isInit==1 );
index 6e1df306430b1ad3ed345558b60928e54f06da29..235d8dd3dff9d8dc5f239b09c86b6671ddc49ead 100644 (file)
@@ -127,7 +127,7 @@ int sqlite3_get_table(
   TabResult res;
 
 #ifdef SQLITE_ENABLE_API_ARMOR
-  if( pazResult==0 ) return SQLITE_MISUSE_BKPT;
+  if( !sqlite3SafetyCheckOk(db) || pazResult==0 ) return SQLITE_MISUSE_BKPT;
 #endif
   *pazResult = 0;
   if( pnColumn ) *pnColumn = 0;
index 5bb91554606c1830639e352d2be453fd4b235585..f0360eef611bc889825af6f5b4996840ae980ccd 100644 (file)
@@ -391,6 +391,9 @@ int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzErrMsg){
   int mxSqlLen;                   /* Max length of an SQL string */
 
 
+#ifdef SQLITE_ENABLE_API_ARMOR
+  if( zSql==0 || pzErrMsg==0 ) return SQLITE_MISUSE_BKPT;
+#endif
   mxSqlLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH];
   if( db->nVdbeActive==0 ){
     db->u1.isInterrupted = 0;