diff options
author | dan <dan@noemail.net> | 2019-04-16 11:21:13 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2019-04-16 11:21:13 +0000 |
commit | 2eb2ca839185e9bd5ef57da7078adecbd2e56994 (patch) | |
tree | 890f2affdad1337d6ab2e65deb093b0ef46b39fd | |
parent | 112e174020809d0b91249716fb9de4aa3ee7437d (diff) | |
download | sqlite-2eb2ca839185e9bd5ef57da7078adecbd2e56994.tar.gz sqlite-2eb2ca839185e9bd5ef57da7078adecbd2e56994.zip |
Avoid a sanitizer error (pointer arithmatic overflow) in vdbesort.c.
FossilOrigin-Name: af61a2fc45a0fa1277d7453779238b77de4c298a9f60714b7dc62ddca5874f80
-rw-r--r-- | manifest | 12 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/vdbesort.c | 10 |
3 files changed, 14 insertions, 10 deletions
@@ -1,5 +1,5 @@ -C Avoid\sa\ssanitizer\serror\sin\stest1.c.\sHave\sreleasetest.tcl/wapptest.tcl\screate\sa\sfile\scalled\s"makecommand.sh"\sthat\scan\sbe\sused\sto\srerun\sa\stest\sfrom\sthe\scommand\sline. -D 2019-04-16T10:51:29.014 +C Avoid\sa\ssanitizer\serror\s(pointer\sarithmatic\soverflow)\sin\svdbesort.c. +D 2019-04-16T11:21:13.568 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -597,7 +597,7 @@ F src/vdbeapi.c 2ddd60f4a351f15ee98d841e346af16111ad59dfa4d25d2dd4012e9875bf7d92 F src/vdbeaux.c f873b5c2efcf8a4d6ecfc5b1a5b06fd810419198f3bd882175d371cc03801873 F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191 F src/vdbemem.c 8e6889761e344babdb8a56dd1ac8911501fa648396544d1644f1cd6a87c80dc0 -F src/vdbesort.c 31c7794a517e8b0a1704988f1f7596b74c6fc07eeb7bb85776f50a391ed9d94f +F src/vdbesort.c 66592d478dbb46f19aed0b42222325eadb84deb40a90eebe25c6e7c1d8468f47 F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392 F src/vtab.c 4c5959e00b7a142198d178e3a822f4e05f36f2d1a3c57657373f9487154fc06b F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 @@ -1818,7 +1818,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 ee886600297c2a03d9d1d10db88d3d107b48e5d4de5e5d91b0ab16cc7c447ede -R 8b174ed25bfed0d8eb722ebaa3aaabbf +P 4de4480ffdea1e923c4b964692ccde92d713c8b6c056bb04bddf1ff55ee891ec +R 53d48b50e3fea254b204992be6aac766 U dan -Z 97f4f18a7a6e556c0ee0ac2993a46468 +Z 2252f4361031453f785e5bf47a799819 diff --git a/manifest.uuid b/manifest.uuid index e29f300b7..afe628e5f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4de4480ffdea1e923c4b964692ccde92d713c8b6c056bb04bddf1ff55ee891ec
\ No newline at end of file +af61a2fc45a0fa1277d7453779238b77de4c298a9f60714b7dc62ddca5874f80
\ No newline at end of file diff --git a/src/vdbesort.c b/src/vdbesort.c index d84a4118d..f909f812d 100644 --- a/src/vdbesort.c +++ b/src/vdbesort.c @@ -1828,15 +1828,19 @@ int sqlite3VdbeSorterWrite( if( nMin>pSorter->nMemory ){ u8 *aNew; - int iListOff = (u8*)pSorter->list.pList - pSorter->list.aMemory; sqlite3_int64 nNew = 2 * (sqlite3_int64)pSorter->nMemory; + int iListOff = -1; + if( pSorter->list.pList ){ + iListOff = (u8*)pSorter->list.pList - pSorter->list.aMemory; + } while( nNew < nMin ) nNew = nNew*2; if( nNew > pSorter->mxPmaSize ) nNew = pSorter->mxPmaSize; if( nNew < nMin ) nNew = nMin; - aNew = sqlite3Realloc(pSorter->list.aMemory, nNew); if( !aNew ) return SQLITE_NOMEM_BKPT; - pSorter->list.pList = (SorterRecord*)&aNew[iListOff]; + if( iListOff>=0 ){ + pSorter->list.pList = (SorterRecord*)&aNew[iListOff]; + } pSorter->list.aMemory = aNew; pSorter->nMemory = nNew; } |