]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a segfault that is possible for an OOM fault in ATTACH when in
authordrh <drh@noemail.net>
Thu, 25 Feb 2010 02:11:22 +0000 (02:11 +0000)
committerdrh <drh@noemail.net>
Thu, 25 Feb 2010 02:11:22 +0000 (02:11 +0000)
shared-cache mode.  This is a cherrypick merge of check-in [e37137376a].

FossilOrigin-Name: f73cc0e9af5e4b7a15e8947c412966f9e9935f8b

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

index f2b91ae9ced86c93c8f5cc29a7b92e828b88bb65..f9eccbca0c167ce4381daf746226d5abac04cb5a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Enhance\sintegrity_check\sto\sdetect\sout-of-order\srowids.\s\sThis\sis\sa\ncherrypick\smerge\sof\scheck-in\s[cae47c5b09].
-D 2010-02-25T02:04:35
+C Fix\sa\ssegfault\sthat\sis\spossible\sfor\san\sOOM\sfault\sin\sATTACH\swhen\sin\nshared-cache\smode.\s\sThis\sis\sa\scherrypick\smerge\sof\scheck-in\s[e37137376a].
+D 2010-02-25T02:11:22
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -106,7 +106,7 @@ F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
 F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
 F src/alter.c 92ba938565d7cc6bfe92aad6cc90c00800ff21d3
 F src/analyze.c 55155f05ee9ab4ce33b7a4d19c449053f8935200
-F src/attach.c 0ba38b38252a34bb9721de35514a1d14058a8e49
+F src/attach.c 508d431e52e16a1a1ec7644b6fc4d95d4442d15b
 F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
 F src/backup.c 744e98359dfc79fed43e8dec911e33e108b06aae
 F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0
@@ -242,7 +242,7 @@ F test/async5.test f3592d79c84d6e83a5f50d3fd500445f7d97dfdf
 F test/attach.test ce9660e51768fab93cf129787be886c5d6c4fd81
 F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437
 F test/attach3.test bd9830bc3a0d22ed1310c9bff6896927937017dc
-F test/attachmalloc.test cf8cf17d183de357b1147a9baacbdfc85b940b61
+F test/attachmalloc.test 38d2da5fdaf09ba0add57296967a3061e5842584
 F test/auth.test 8f21c160a4562f54f27618e85bac869efcecbcaf
 F test/auth2.test ee3ba272e2b975e913afc9b041ee75706e190005
 F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
@@ -788,14 +788,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P ce624e39c2f7c5480937a8d2007e7ebd684665dc
-R d843f9dd14d54f9d9ac0fb8fbca56eb7
+P ecd22ef34d5cd516d2b6138f8b80c39daad3519d
+R 5907b699b02304d204faf8b1c233d9e6
 U drh
-Z 0833a2fc5ea81f9538bc3f68db2345f2
+Z 3b54ce47ea74c6e99a2a4c19d25d0720
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFLhdq3oxKgR168RlERAsU6AJ4hJDXzHpYPBgdnBpOzJH5z11UdTACghAtP
-Gtx8ig9RfpMIFqXyVQXO0ck=
-=5qgf
+iD8DBQFLhdxOoxKgR168RlERAijbAJ9X02LFH0XMk7+viR+H9LRDw87XgQCeNaZ2
+dz9U50KJLRq3IXujEMbataY=
+=gdto
 -----END PGP SIGNATURE-----
index d18f65eec4408d72974549472ea3f66ba9b1d7ca..1616b28a792571b7049ee408eaaccc387447d37f 100644 (file)
@@ -1 +1 @@
-ecd22ef34d5cd516d2b6138f8b80c39daad3519d
\ No newline at end of file
+f73cc0e9af5e4b7a15e8947c412966f9e9935f8b
\ No newline at end of file
index df9be1f3a3f6dde9acaa0489841a70f5c39e534a..d7d3177b288c74f8966f9d95769e4a84c8ac882c 100644 (file)
@@ -145,8 +145,12 @@ 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
   if( rc==SQLITE_OK ){
index 30841cea76f797dd7baace70c9c8aa3b4ba2844e..cc506bee6abbaaa24efb094cb2e4fe1b68daeac8 100644 (file)
@@ -60,4 +60,17 @@ do_malloc_test attachmalloc-2 -tclprep {
   ATTACH 'test2.db' AS db1;
 }
 
+set enable_shared_cache [sqlite3_enable_shared_cache 1]
+sqlite3 dbaux test2.db
+dbaux eval {SELECT * FROM sqlite_master}
+do_malloc_test attachmalloc-3 -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