From 146121f5cb5ca97da56c1bf48bc22ba7629409c9 Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 12 Nov 2021 14:39:49 +0000 Subject: [PATCH] Improved handling of OOM while reallocating a column name to add type information. dbsqlfuzz 5a195b4233649e49e0aa34f1b743ca192d85b198 FossilOrigin-Name: 5995dd4de4997c43b43befc1281ef6378f33f781134c7f368299d64db2344f1d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/expr.c | 3 ++- src/select.c | 3 +++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index 69b59f1286..1285128aa0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\ssure\sthe\srowid\svalue\sreturned\sby\sthe\sVUpdate\sopcode\sis\salways\sinitialized. -D 2021-11-11T23:52:44.183 +C Improved\shandling\sof\sOOM\swhile\sreallocating\sa\scolumn\sname\sto\sadd\stype\ninformation.\s\sdbsqlfuzz\s5a195b4233649e49e0aa34f1b743ca192d85b198 +D 2021-11-12T14:39:49.682 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -502,7 +502,7 @@ F src/date.c fa928630fecf1d436cdc7a7a5c950c781709023ca782c21b7a43cc7361a9451e F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d F src/delete.c 0c151975fa99560767d7747f9b60543d0093d9f8b89f13d2d6058e9c83ad19e7 -F src/expr.c 5c021ca2495b1e908610276cf5d462133d63ec47863235c8958d36e61841c72d +F src/expr.c 6c55bf2170ae882369d2b87ad93ea976b8afb12cecc37a3dd86bc31eed9d8232 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 187b67af20c5795953a592832c5d985e4313fe503ebd8f95e3e9e9ad5a730bb5 F src/func.c 1cfb09d7ffca81238eccefdb0293e1f5b7cfebbd1816dfad5ec6024742a7496b @@ -550,7 +550,7 @@ F src/printf.c 5901672228f305f7d493cbc4e7d76a61a5caecdbc1cd06b1f9ec42ea4265cf8d F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c F src/resolve.c 4a1db4aadd802683db40ca2dbbb268187bd195f10cbdb7206dbd8ac988795571 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c b4b3a0f32e70d93efbb357783846853dbd8b266ec0d7035aa0a245c33eecf72d +F src/select.c 7fa20486dd1c372fd59ebf7642e279f76432f77875c9ab88f0331256ddae2f12 F src/shell.c.in f8854bcb0d14707d661732698d5210d7f01694000c46e8014b323ad18f575be6 F src/sqlite.h.in 5cd209ac7dc4180f0e19292846f40440b8488015849ca0110c70b906b57d68f0 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -1932,7 +1932,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 83e6ac71073edfa0cd73788c30bdd5f09cb04c8a6a7d5123123dbcd354f430b8 -R 644c566293a1fbdf23cc26ec0bb862f7 +P 150b5be5d5771485f521e3a58312596ecdcd35f3a0ae9d42d88bb99348a197c4 +R 02a5ea84da0b0ec1dc829fdadfdaad66 U drh -Z 85ba657b24546f78f23e11e2342a59c2 +Z f7e0f9ca9813d06efb398d97a353f90e diff --git a/manifest.uuid b/manifest.uuid index 82f0f99a41..a74c668dd0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -150b5be5d5771485f521e3a58312596ecdcd35f3a0ae9d42d88bb99348a197c4 \ No newline at end of file +5995dd4de4997c43b43befc1281ef6378f33f781134c7f368299d64db2344f1d \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 62d2691bc4..126a870f9d 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2803,7 +2803,8 @@ int sqlite3FindInIndex( CollSeq *pReq = sqlite3BinaryCompareCollSeq(pParse, pLhs, pRhs); int j; - assert( pReq!=0 || pRhs->iColumn==XN_ROWID || pParse->nErr ); + assert( pReq!=0 || pRhs->iColumn==XN_ROWID + || pParse->nErr || db->mallocFailed ); for(j=0; jaiColumn[j]!=pRhs->iColumn ) continue; assert( pIdx->azColl[j] ); diff --git a/src/select.c b/src/select.c index ebb746467d..5cf6ebf1e7 100644 --- a/src/select.c +++ b/src/select.c @@ -2209,6 +2209,9 @@ void sqlite3SelectAddColumnTypeAndCollation( if( pCol->zCnName ){ memcpy(&pCol->zCnName[n+1], zType, m+1); pCol->colFlags |= COLFLAG_HASTYPE; + }else{ + testcase( pCol->colFlags & COLFLAG_HASTYPE ); + pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL); } } if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;