In the whereLoopXfer() routine, ensure that the destination is fully

initialized even if an OOM error occurs.

FossilOrigin-Name: c4258708c08c5b1956052f9febbf22c1e94c8352a25059063746921d2cc373b7
This commit is contained in:
drh 2021-04-22 12:38:30 +00:00
parent 31536304a5
commit 824043150f
3 changed files with 8 additions and 8 deletions

View File

@ -1,5 +1,5 @@
C The\snew\sOP_Null\sopcode\sfrom\scheck-in\s[8b54102a00852b72]\swas\snot\scoded\ncorrectly.\s\sThis\scheck-in\sattempts\sto\sfix\sthat.
D 2021-04-21T23:13:26.408
C In\sthe\swhereLoopXfer()\sroutine,\sensure\sthat\sthe\sdestination\sis\sfully\ninitialized\seven\sif\san\sOOM\serror\soccurs.
D 2021-04-22T12:38:30.898
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -629,7 +629,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
F src/wal.c 69e770e96fd56cc21608992bf2c6f1f3dc5cf2572d0495c6a643b06c3a679f14
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
F src/walker.c 6e540867a30d81e00205995fa2dc0e3d25365a7402251c9fd5d19aa4ff5e60b6
F src/where.c 1c305bab0996a63219a6cb3d4718587f3a5dc5608120c4448985aa2bef88b7f5
F src/where.c cb76c17d0bded653040cb16e2f4532fa7b20f5f8c205f4078d346562821107a2
F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4
F src/wherecode.c 992bf0d7520bffd345472fb9bc83a1ca0134e46d9e904879bb21e1e77957fcc3
F src/whereexpr.c d8cafcf6781cf871082f04d7540862cf0fe30cb381dd1b2145a380376364fe8e
@ -1913,7 +1913,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 6fe50dcc239d2d1fc2a38aa705f4c75cbe26b3e48d098537306d96d6a4005659
R c08ea2e3d9f1c824a6f5c3535918762c
P 02af30aab24878c4382a8863512b816889400104549b51df6a632767fee48d04
R 3d8464626ec4ed7160b5e3f3b7bf199b
U drh
Z 1a1da1d17ff339b1b7dc133d35a59f0c
Z 9339130783244dccd8482f7c789d5fd4

View File

@ -1 +1 @@
02af30aab24878c4382a8863512b816889400104549b51df6a632767fee48d04
c4258708c08c5b1956052f9febbf22c1e94c8352a25059063746921d2cc373b7

View File

@ -1942,7 +1942,7 @@ static int whereLoopResize(sqlite3 *db, WhereLoop *p, int n){
static int whereLoopXfer(sqlite3 *db, WhereLoop *pTo, WhereLoop *pFrom){
whereLoopClearUnion(db, pTo);
if( whereLoopResize(db, pTo, pFrom->nLTerm) ){
memset(&pTo->u, 0, sizeof(pTo->u));
memset(pTo, 0, WHERE_LOOP_XFER_SZ);
return SQLITE_NOMEM_BKPT;
}
memcpy(pTo, pFrom, WHERE_LOOP_XFER_SZ);