When sqlite3_create_collation is called with an invalid encoding, return
SQLITE_MISUSE. (CVS 5354) FossilOrigin-Name: eae4105d8a162ba80ca6fde40ae24fdc6c3eccdf
This commit is contained in:
parent
2ef684875f
commit
d55d57ed5e
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
||||
C Fix\san\serror\schecked\sin\sas\spart\sof\s(5350).\s(CVS\s5353)
|
||||
D 2008-07-07T17:13:09
|
||||
C When\ssqlite3_create_collation\sis\scalled\swith\san\sinvalid\sencoding,\sreturn\nSQLITE_MISUSE.\s(CVS\s5354)
|
||||
D 2008-07-07T17:53:08
|
||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||
F Makefile.in 325dfac0a0dd1cb4d975f1ace6453157892e6042
|
||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||
@ -114,7 +114,7 @@ F src/insert.c 9af927a81fdc99624130dc83722b3ab6364035a6
|
||||
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
|
||||
F src/legacy.c 3626c71fb70912abec9a4312beba753a9ce800df
|
||||
F src/loadext.c 40024a0f476c1279494876b9a002001b29e5d3e3
|
||||
F src/main.c b3c4cb43fc0ea3248dcc7ec64ffeb2754b0abe5a
|
||||
F src/main.c 1fa8697b91666b5865a86f5aa143b0075800a1d3
|
||||
F src/malloc.c f52166df8abd7ff6990dbee1a0ce3534addc8617
|
||||
F src/md5.c 008216bbb5d34c6fbab5357aa68575ad8a31516a
|
||||
F src/mem1.c 8340fa5f969e9f9b9bdeb54106457a2003456d2b
|
||||
@ -142,14 +142,14 @@ F src/printf.c 8b063da9dcde26b7c500a01444b718d86f21bc6e
|
||||
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
|
||||
F src/select.c 3e44f3910660ab63c690d2a4eac5449ae48ce96b
|
||||
F src/shell.c 484e7297e066f22830f9c15d7abbcdd2acb097b0
|
||||
F src/sqlite.h.in 76c144d23f8824e8811e837e9396b9f1361f5902
|
||||
F src/sqlite.h.in 866842b5daae9bf95b0e79cb4d92518f78179dca
|
||||
F src/sqlite3ext.h 1e3887c9bd3ae66cb599e922824b04cd0d0f2c3e
|
||||
F src/sqliteInt.h 35e420ced9e27af5ee387cd40f2e7a431665f858
|
||||
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
|
||||
F src/status.c 6cb10377992505bd69f1ca1d75c1240a65f25a58
|
||||
F src/table.c 1fa8f8113ac9cbc09ae4801c6d2a7f0af82c5822
|
||||
F src/tclsqlite.c 4dd9ee4cb44846ad9bcc4d0da8088c1e7d4b33d9
|
||||
F src/test1.c 0a399f36f3b9a4514cfdd44d307c5271488a53e2
|
||||
F src/test1.c 92fcc114c60ea9c1c41437db43cfc5a920e7402a
|
||||
F src/test2.c c46d146019ab6e37474e66b3c789e5237d9ea7b7
|
||||
F src/test3.c 01ff03164cf6a2bededa3b44ecd481603e2644fc
|
||||
F src/test4.c ff4ecde3cafc71337b04e8cb7da5bb88e85d70e7
|
||||
@ -598,7 +598,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
|
||||
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
|
||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||
P 38e04d67635d49661f9b95338fc1cb8197bf0bc7
|
||||
R 78060972ae886eae791f694f62a0db49
|
||||
U danielk1977
|
||||
Z 7cfb7b4d0ecbf47a8d1f1b2a4da8cfc3
|
||||
P acfb2b41ae66307ba80b6245aced9cc1d8092189
|
||||
R 847cfc5b52ddb522dcd4cc35ae7605db
|
||||
U drh
|
||||
Z 70baa66de932a9ed85bb20bf469edd2a
|
||||
|
@ -1 +1 @@
|
||||
acfb2b41ae66307ba80b6245aced9cc1d8092189
|
||||
eae4105d8a162ba80ca6fde40ae24fdc6c3eccdf
|
10
src/main.c
10
src/main.c
@ -14,7 +14,7 @@
|
||||
** other files are for internal use by SQLite and should not be
|
||||
** accessed by users of the library.
|
||||
**
|
||||
** $Id: main.c,v 1.467 2008/07/07 14:50:14 drh Exp $
|
||||
** $Id: main.c,v 1.468 2008/07/07 17:53:08 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include <ctype.h>
|
||||
@ -999,7 +999,7 @@ const char *sqlite3_errmsg(sqlite3 *db){
|
||||
if( !db ){
|
||||
return sqlite3ErrStr(SQLITE_NOMEM);
|
||||
}
|
||||
if( !sqlite3SafetyCheckSickOrOk(db) || db->errCode==SQLITE_MISUSE ){
|
||||
if( !sqlite3SafetyCheckSickOrOk(db) ){
|
||||
return sqlite3ErrStr(SQLITE_MISUSE);
|
||||
}
|
||||
sqlite3_mutex_enter(db->mutex);
|
||||
@ -1042,7 +1042,7 @@ const void *sqlite3_errmsg16(sqlite3 *db){
|
||||
if( !db ){
|
||||
return (void *)(&outOfMemBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]);
|
||||
}
|
||||
if( !sqlite3SafetyCheckSickOrOk(db) || db->errCode==SQLITE_MISUSE ){
|
||||
if( !sqlite3SafetyCheckSickOrOk(db) ){
|
||||
return (void *)(&misuseBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]);
|
||||
}
|
||||
sqlite3_mutex_enter(db->mutex);
|
||||
@ -1103,10 +1103,8 @@ static int createCollation(
|
||||
if( enc2==SQLITE_UTF16 ){
|
||||
enc2 = SQLITE_UTF16NATIVE;
|
||||
}
|
||||
|
||||
if( (enc2&~3)!=0 ){
|
||||
sqlite3Error(db, SQLITE_ERROR, "unknown encoding");
|
||||
return SQLITE_ERROR;
|
||||
return SQLITE_MISUSE;
|
||||
}
|
||||
|
||||
/* Check if this call is removing or replacing an existing collation
|
||||
|
@ -30,7 +30,7 @@
|
||||
** the version number) and changes its name to "sqlite3.h" as
|
||||
** part of the build process.
|
||||
**
|
||||
** @(#) $Id: sqlite.h.in,v 1.362 2008/06/28 11:23:00 danielk1977 Exp $
|
||||
** @(#) $Id: sqlite.h.in,v 1.363 2008/07/07 17:53:08 drh Exp $
|
||||
*/
|
||||
#ifndef _SQLITE3_H_
|
||||
#define _SQLITE3_H_
|
||||
@ -2433,6 +2433,10 @@ int sqlite3_open_v2(
|
||||
** However, the error string might be overwritten or deallocated by
|
||||
** subsequent calls to other SQLite interface functions.
|
||||
**
|
||||
** If an interface fails with SQLITE_MISUSE, that means the interface
|
||||
** was invoked incorrectly by the application. In that case, the
|
||||
** error code and message may or may not be set.
|
||||
**
|
||||
** INVARIANTS:
|
||||
**
|
||||
** {F12801} The [sqlite3_errcode(D)] interface returns the numeric
|
||||
|
13
src/test1.c
13
src/test1.c
@ -13,7 +13,7 @@
|
||||
** is not included in the SQLite library. It is used for automated
|
||||
** testing of the SQLite library.
|
||||
**
|
||||
** $Id: test1.c,v 1.310 2008/07/07 14:50:14 drh Exp $
|
||||
** $Id: test1.c,v 1.311 2008/07/07 17:53:08 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "tcl.h"
|
||||
@ -1665,6 +1665,7 @@ static int test_create_collation_v2(
|
||||
){
|
||||
TestCollationX *p;
|
||||
sqlite3 *db;
|
||||
int rc;
|
||||
|
||||
if( objc!=5 ){
|
||||
Tcl_WrongNumArgs(interp, 1, objv, "DB-HANDLE NAME CMP-PROC DEL-PROC");
|
||||
@ -1679,7 +1680,15 @@ static int test_create_collation_v2(
|
||||
Tcl_IncrRefCount(p->pCmp);
|
||||
Tcl_IncrRefCount(p->pDel);
|
||||
|
||||
sqlite3_create_collation_v2(db, Tcl_GetString(objv[2]), SQLITE_UTF8,
|
||||
rc = sqlite3_create_collation_v2(db, Tcl_GetString(objv[2]), 16,
|
||||
(void *)p, testCreateCollationCmp, testCreateCollationDel
|
||||
);
|
||||
if( rc!=SQLITE_MISUSE ){
|
||||
Tcl_AppendResult(interp, "sqlite3_create_collate_v2() failed to detect "
|
||||
"an invalid encoding", (char*)0);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
rc = sqlite3_create_collation_v2(db, Tcl_GetString(objv[2]), SQLITE_UTF8,
|
||||
(void *)p, testCreateCollationCmp, testCreateCollationDel
|
||||
);
|
||||
return TCL_OK;
|
||||
|
Loading…
x
Reference in New Issue
Block a user