diff options
author | dan <Dan Kennedy> | 2024-12-12 20:59:32 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2024-12-12 20:59:32 +0000 |
commit | d26bb375be00e62cd1cfb1a3f98cd227a9ceb28b (patch) | |
tree | c1a310ae8fa637bab81407ff7ad45e3e2d918dd8 /src | |
parent | b1ad83a342914a32c136b168f68198fbe07ff52a (diff) | |
download | sqlite-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.c | 12 |
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 ){ |