]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the undocumented sqlite_rename_parent() function does not
authordrh <drh@noemail.net>
Mon, 14 Apr 2014 19:48:25 +0000 (19:48 +0000)
committerdrh <drh@noemail.net>
Mon, 14 Apr 2014 19:48:25 +0000 (19:48 +0000)
crash even if it is invoked with NULL arguments.
Ticket [264b970c4379fd4b94]

FossilOrigin-Name: c6fa8d0d82805be230f672eabccdfa5680d4ddfd

manifest
manifest.uuid
src/alter.c
test/alter.test

index 3301b08ca6536aa98037abe05157671e653627d2..5ba411e0a6a408e20af2fd22e7e35b80e9dd851d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sthe\sunused\ssecond\sargument\sfrom\ssqlite3ExprCachePop().\s\sAdd\san\nALWAYS()\son\san\salways-true\sconditional\sin\ssqlite3VdbeResolveLabel().
-D 2014-04-13T19:28:15.499
+C Make\ssure\sthe\sundocumented\ssqlite_rename_parent()\sfunction\sdoes\snot\ncrash\seven\sif\sit\sis\sinvoked\swith\sNULL\sarguments.\nTicket\s[264b970c4379fd4b94]
+D 2014-04-14T19:48:25.984
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -157,7 +157,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 3d8b83c91651f53472ca17599dae3457b8b89494
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c 5d99edbac5bc416032772b723ee30182ee6e5de0
+F src/alter.c b00900877f766f116f9e16116f1ccacdc21d82f1
 F src/analyze.c 663e0b291d27eb03c9fd6b421e2d61ba348a2389
 F src/attach.c 3801129015ef59d76bf23c95ef9b0069d18a0c52
 F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
@@ -298,7 +298,7 @@ F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
 F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783
-F test/alter.test e88dfa77e020c2b48e52a8020c70171ab828e079
+F test/alter.test 547dc2d292644301ac9a7dda22b319b74f9c08d2
 F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060
 F test/alter3.test 49c9d9fba2b8fcdce2dedeca97bbf1f369cc548d
 F test/alter4.test d6c011fa0d6227abba762498cafbb607c9609e93
@@ -1160,7 +1160,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P 3122b8364082be783821da01d4af2af6a9586327
-R e1df7805a07beb887bab893b56a4a7f9
+P ab23abf392175d3e256ff619b13abbbe732a49ed
+R 410ec05c8f2a9918dc68eaaf465de80d
 U drh
-Z 77065e6cb595843b2b0b90941a9d16f6
+Z 8590c3c7b25dad5b568a22b07ca7e219
index 39f1fc5832069967d61ddf3486432c2b95164534..1f38f99a6e9c660a406caf9cc69a6afe22078480 100644 (file)
@@ -1 +1 @@
-ab23abf392175d3e256ff619b13abbbe732a49ed
\ No newline at end of file
+c6fa8d0d82805be230f672eabccdfa5680d4ddfd
\ No newline at end of file
index 1a83e570db828d67bb6aa31366aad923320c3d0f..64204b7b2496cafe09f465c2e698e15169a41ed2 100644 (file)
@@ -116,6 +116,7 @@ static void renameParentFunc(
   int token;                      /* Type of token */
 
   UNUSED_PARAMETER(NotUsed);
+  if( zInput==0 || zOld==0 ) return;
   for(z=zInput; *z; z=z+n){
     n = sqlite3GetToken(z, &token);
     if( token==TK_REFERENCES ){
index 557162f837a259a9907e0a336cc1833a0edc9363..ddf16988246dd5a242ffbf31df742889a0a52930 100644 (file)
@@ -875,4 +875,42 @@ do_execsql_test alter-16.2 {
   SELECT * FROM t16a_rn ORDER BY a;
 } {abc 1.25 99 xyzzy cba 5.5 98 fizzle}
 
+#-------------------------------------------------------------------------
+# Verify that NULL values into the internal-use-only sqlite_rename_*()
+# functions do not cause problems.
+#
+do_execsql_test alter-17.1 {
+  SELECT sqlite_rename_table('CREATE TABLE xyz(a,b,c)','abc');
+} {{CREATE TABLE "abc"(a,b,c)}}
+do_execsql_test alter-17.2 {
+  SELECT sqlite_rename_table('CREATE TABLE xyz(a,b,c)',NULL);
+} {{CREATE TABLE "(NULL)"(a,b,c)}}
+do_execsql_test alter-17.3 {
+  SELECT sqlite_rename_table(NULL,'abc');
+} {{}}
+do_execsql_test alter-17.4 {
+  SELECT sqlite_rename_trigger('CREATE TRIGGER r1 ON xyz WHEN','abc');
+} {{CREATE TRIGGER r1 ON "abc" WHEN}}
+do_execsql_test alter-17.5 {
+  SELECT sqlite_rename_trigger('CREATE TRIGGER r1 ON xyz WHEN',NULL);
+} {{CREATE TRIGGER r1 ON "(NULL)" WHEN}}
+do_execsql_test alter-17.6 {
+  SELECT sqlite_rename_trigger(NULL,'abc');
+} {{}}
+do_execsql_test alter-17.7 {
+  SELECT sqlite_rename_parent('CREATE TABLE t1(a REFERENCES "xyzzy")',
+         'xyzzy','lmnop');
+} {{CREATE TABLE t1(a REFERENCES "lmnop")}}
+do_execsql_test alter-17.8 {
+  SELECT sqlite_rename_parent('CREATE TABLE t1(a REFERENCES "xyzzy")',
+         'xyzzy',NULL);
+} {{CREATE TABLE t1(a REFERENCES "(NULL)")}}
+do_execsql_test alter-17.9 {
+  SELECT sqlite_rename_parent('CREATE TABLE t1(a REFERENCES "xyzzy")',
+         NULL, 'lmnop');
+} {{}}
+do_execsql_test alter-17.10 {
+  SELECT sqlite_rename_parent(NULL,'abc','xyz');
+} {{}}
+
 finish_test