aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordan <Dan Kennedy>2024-12-12 20:59:32 +0000
committerdan <Dan Kennedy>2024-12-12 20:59:32 +0000
commitd26bb375be00e62cd1cfb1a3f98cd227a9ceb28b (patch)
treec1a310ae8fa637bab81407ff7ad45e3e2d918dd8 /src
parentb1ad83a342914a32c136b168f68198fbe07ff52a (diff)
downloadsqlite-d26bb375be00e62cd1cfb1a3f98cd227a9ceb28b.tar.gz
sqlite-d26bb375be00e62cd1cfb1a3f98cd227a9ceb28b.zip
Fix a buffer overread in test code. Add test configurations for ENABLE_SETLK=1 and FOR_WINRT=1 builds to release testing.
FossilOrigin-Name: b558db5db7e7c9aced1d24d74dc5ee2fab7cd04ec6570247c9c45723eb6f8fc0
Diffstat (limited to 'src')
-rw-r--r--src/test1.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/test1.c b/src/test1.c
index ee99f8dad..4dcba97cd 100644
--- a/src/test1.c
+++ b/src/test1.c
@@ -8024,13 +8024,13 @@ static int SQLITE_TCLAPI win32_file_lock(
pVfs = sqlite3_vfs_find(0);
x.pFd = (sqlite3_file*)sqlite3_malloc(pVfs->szOsFile);
- /* xOpen() must be passed a dual-nul-terminated string */
+ /* xOpen() must be passed a dual-nul-terminated string preceded in memory
+ ** by 4 0x00 bytes. */
zFilename = Tcl_GetStringFromObj(objv[1], &nFilename);
- zTerm = (char*)sqlite3_malloc(nFilename+2);
- memcpy(zTerm, zFilename, nFilename);
- zTerm[nFilename] = 0;
- zTerm[nFilename+1] = 0;
- rc = pVfs->xOpen(pVfs, zTerm, x.pFd, flags, &flags);
+ zTerm = (char*)sqlite3_malloc(nFilename+6);
+ memset(zTerm, 0, nFilename+6);
+ memcpy(&zTerm[4], zFilename, nFilename);
+ rc = pVfs->xOpen(pVfs, &zTerm[4], x.pFd, flags, &flags);
sqlite3_free(zTerm);
if( rc!=SQLITE_OK ){