]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a segfault that can occur if a malloc fails in ATTACH in shared-cache mode.
authordan <dan@noemail.net>
Tue, 23 Feb 2010 10:50:26 +0000 (10:50 +0000)
committerdan <dan@noemail.net>
Tue, 23 Feb 2010 10:50:26 +0000 (10:50 +0000)
FossilOrigin-Name: d6343d035df36217e44549cfbcd9c1138658266c

manifest
manifest.uuid
src/attach.c
test/attachmalloc.test

index e24e168adf3357b86981f2f3cd3bc53e276ff6b3..42063cbbb833db92e6a5b9f9ef068b8826d2ad18 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Apply\sfix\s[9b8acf8319]\sto\sthe\s3.6.1\sbranch.
-D 2010-01-05T18:11:53
+C Fix\sa\ssegfault\sthat\scan\soccur\sif\sa\smalloc\sfails\sin\sATTACH\sin\sshared-cache\smode.
+D 2010-02-23T10:50:27
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 2713ea64947be3b35f35d9a3158bb8299c90b019
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -92,7 +92,7 @@ F sqlite3.def a1be7b9a4b8b51ac41c6ff6e8e44a14ef66b338b
 F sqlite3.pc.in 32b8a014799c2028c8e0c9cc5659718262fc493f
 F src/alter.c 2c541aaa88d720301253f181799d4af7bb9ddf1c
 F src/analyze.c 747ce8cb6b318bb0d0576cfb5277aed98cbbeb5c
-F src/attach.c a85c14612e7e3410e0c3d2e0241832fa9688bd14
+F src/attach.c c4adb24b40039bf6fcb091db7db51524e44c5505
 F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627
 F src/bitvec.c 95c86bd18d8fedf0533f5af196192546e10a7e7d
 F src/btmutex.c 709cad2cdca0afd013f0f612363810e53f59ec53
@@ -207,7 +207,7 @@ F test/async3.test 9ffa0977a78cc6351862a1583be2b1eecd41736d
 F test/attach.test 75a5d22f88e730967d68f2c9f95e786e3953d8e3
 F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437
 F test/attach3.test 7b92dc8e40c1ebca9732ca6f2d3fefbd46f196df
-F test/attachmalloc.test ccbde53bcb0a61020afa3e0670ca9c6c5b99af32
+F test/attachmalloc.test 95826e77cad2507b2b260b8fa6e4ec624e20c345
 F test/auth.test 9eb4b6b99eee54c95711c74c4b9694acf4d850ed
 F test/auth2.test ee3ba272e2b975e913afc9b041ee75706e190005
 F test/autoinc.test 42af2c407c4e37d0626f9cda57ed381e94522c9d
@@ -617,7 +617,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 9f819ea6b21e13e6def5c841cbdba96661f322a3
-R 3d0a074f76cf6d4fa9806148f6ad144b
+P 62b4891b155ae566006236fee368794eabcd71a3
+R d96209734cd2738ccdad625a0426d4ae
 U dan
-Z e82845b46439863070353ea34d902bb9
+Z 9b5cc3787278b4c31dbe3b17b7863d17
index 8de9441862cc9c2eff575d47f6e5b1b838baaf5a..f10660375d7b9173f7da28c9faf2d6bf5db77899 100644 (file)
@@ -1 +1 @@
-62b4891b155ae566006236fee368794eabcd71a3
\ No newline at end of file
+d6343d035df36217e44549cfbcd9c1138658266c
\ No newline at end of file
index b8668f52bb5a718c902a23326eaf9f2ecffec90c..76d6da08264474f910010b361d5afcffe49917b5 100644 (file)
@@ -144,8 +144,11 @@ static void attachFunc(
     sqlite3PagerLockingMode(pPager, db->dfltLockMode);
     sqlite3PagerJournalMode(pPager, db->dfltJournalMode);
   }
-  aNew->zName = sqlite3DbStrDup(db, zName);
   aNew->safety_level = 3;
+  aNew->zName = sqlite3DbStrDup(db, zName);
+  if( rc==SQLITE_OK && aNew->zName==0 ){
+    rc = SQLITE_NOMEM;
+  }
 
 #if SQLITE_HAS_CODEC
   {
index a6de5cecb3ee860ebc77abe864ff60ac8f5b0d4e..3232a8df73f1fb0d56d7e0049b7dfc692252caf3 100644 (file)
@@ -46,4 +46,16 @@ do_malloc_test attachmalloc-1 -tclprep {
   CREATE TABLE four.t1(x);
 }
 
+set enable_shared_cache [sqlite3_enable_shared_cache 1]
+sqlite3 dbaux test2.db
+dbaux eval {SELECT * FROM sqlite_master}
+do_malloc_test attachmalloc-2 -sqlbody {
+  SELECT * FROM sqlite_master;
+  ATTACH 'test2.db' AS two;
+} -cleanup {
+  db eval { DETACH two }
+}
+dbaux close
+sqlite3_enable_shared_cache $enable_shared_cache
+
 finish_test