1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix an issue with sqlite3_bind_text64() with the SQLITE_UTF16 encoding

parameter.  Remove some unreachable code from the text64() and blob64()
implementation.

FossilOrigin-Name: 34292b084ef48cd6e9ca5704f6b072a29733b4c2
This commit is contained in:
drh
2014-09-11 23:34:55 +00:00
parent 46c831bf2a
commit fc59a954cb
3 changed files with 13 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
C Add\snew\sAPIs\sthat\stake\s64-bit\slength\sparameters:\ssqlite3_malloc64(),\nsqlite3_realloc64(),\ssqlite3_bind_blob64(),\ssqlite3_bind_text64(),\nsqlite3_result_blob64(),\sand\ssqlite3_result_text64().\nAdd\sthe\ssqlite3_msize()\sinterface.\nInternal\smemory\sallocation\sroutines\snow\suse\s64-bit\sunsigned\nlength\sparameters\sfor\ssafety.\nFix\sthe\ssqlite3_get_table()\sto\suse\ssqlite3_realloc64()\sto\savoid\na\sinteger\soverflow\sproblem. C Fix\san\sissue\swith\ssqlite3_bind_text64()\swith\sthe\sSQLITE_UTF16\sencoding\nparameter.\s\sRemove\ssome\sunreachable\scode\sfrom\sthe\stext64()\sand\sblob64()\nimplementation.
D 2014-09-11T18:44:04.913 D 2014-09-11T23:34:55.607
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -291,7 +291,7 @@ F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
F src/vdbe.c 9a45dcbcc967fc0cb9248c75ba245d1d47de3e78 F src/vdbe.c 9a45dcbcc967fc0cb9248c75ba245d1d47de3e78
F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8 F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
F src/vdbeInt.h b4843c35c3ba533b69d4250f550b5bacf2fb013d F src/vdbeInt.h b4843c35c3ba533b69d4250f550b5bacf2fb013d
F src/vdbeapi.c cec65a12dc2fe9072d5108d9f75df57b0324883a F src/vdbeapi.c 06b712d4772b318b69cd37a416deb1ff0426aa8c
F src/vdbeaux.c 91fd1e0c54a765838dc61fcf79f31acce035ce38 F src/vdbeaux.c 91fd1e0c54a765838dc61fcf79f31acce035ce38
F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4 F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4
F src/vdbemem.c dc36ea9fe26c25550c50085f388167086ef7d73a F src/vdbemem.c dc36ea9fe26c25550c50085f388167086ef7d73a
@@ -1197,8 +1197,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 65884d4f81a4705b0356b6cb8ec4909945ff5c19 6ab76c5fedfe568b0f0f34a600f9135bf6558148 P 7e4978c003867d1b532b69221013dda75ca61953
R a34346a4fba04f6707f06567bf21377a R 5b504a805873df7c692d762cd653895b
T +closed 6ab76c5fedfe568b0f0f34a600f9135bf6558148
U drh U drh
Z ecfd648f0ae419a16a536c86444de6f4 Z 9235587180e257c32aca7830c18cbf2e

View File

@@ -1 +1 @@
7e4978c003867d1b532b69221013dda75ca61953 34292b084ef48cd6e9ca5704f6b072a29733b4c2

View File

@@ -235,12 +235,11 @@ static int invokeValueDestructor(
void (*xDel)(void*), /* The destructor */ void (*xDel)(void*), /* The destructor */
sqlite3_context *pCtx /* Set a SQLITE_TOOBIG error if no NULL */ sqlite3_context *pCtx /* Set a SQLITE_TOOBIG error if no NULL */
){ ){
assert( xDel!=SQLITE_DYNAMIC );
if( xDel==0 ){ if( xDel==0 ){
/* noop */ /* noop */
}else if( xDel==SQLITE_TRANSIENT ){ }else if( xDel==SQLITE_TRANSIENT ){
/* noop */ /* noop */
}else if( xDel==SQLITE_DYNAMIC ){
sqlite3_free((void*)p);
}else{ }else{
xDel((void*)p); xDel((void*)p);
} }
@@ -264,6 +263,7 @@ void sqlite3_result_blob64(
void (*xDel)(void *) void (*xDel)(void *)
){ ){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
assert( xDel!=SQLITE_DYNAMIC );
if( n>0x7fffffff ){ if( n>0x7fffffff ){
(void)invokeValueDestructor(z, xDel, pCtx); (void)invokeValueDestructor(z, xDel, pCtx);
}else{ }else{
@@ -317,6 +317,7 @@ void sqlite3_result_text64(
unsigned char enc unsigned char enc
){ ){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
assert( xDel!=SQLITE_DYNAMIC );
if( n>0x7fffffff ){ if( n>0x7fffffff ){
(void)invokeValueDestructor(z, xDel, pCtx); (void)invokeValueDestructor(z, xDel, pCtx);
}else{ }else{
@@ -1179,6 +1180,7 @@ int sqlite3_bind_blob64(
sqlite3_uint64 nData, sqlite3_uint64 nData,
void (*xDel)(void*) void (*xDel)(void*)
){ ){
assert( xDel!=SQLITE_DYNAMIC );
if( nData>0x7fffffff ){ if( nData>0x7fffffff ){
return invokeValueDestructor(zData, xDel, 0); return invokeValueDestructor(zData, xDel, 0);
}else{ }else{
@@ -1234,9 +1236,11 @@ int sqlite3_bind_text64(
void (*xDel)(void*), void (*xDel)(void*),
unsigned char enc unsigned char enc
){ ){
assert( xDel!=SQLITE_DYNAMIC );
if( nData>0x7fffffff ){ if( nData>0x7fffffff ){
return invokeValueDestructor(zData, xDel, 0); return invokeValueDestructor(zData, xDel, 0);
}else{ }else{
if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
return bindText(pStmt, i, zData, nData, xDel, enc); return bindText(pStmt, i, zData, nData, xDel, enc);
} }
} }