aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2007-05-09 08:24:44 +0000
committerdanielk1977 <danielk1977@noemail.net>2007-05-09 08:24:44 +0000
commitb56fe1ff27e97c0f6d8e8c7552be8c73e2862df4 (patch)
treeb6ed9cf54476620c96ea79ab56db79f947288476 /src
parent37cd66a6a02f74939585414a3dace0195e5e41ef (diff)
downloadsqlite-b56fe1ff27e97c0f6d8e8c7552be8c73e2862df4.tar.gz
sqlite-b56fe1ff27e97c0f6d8e8c7552be8c73e2862df4.zip
Fix enforcement of the LIKE_PATTERN limit. (CVS 3962)
FossilOrigin-Name: 8819617b7cf7ccd64bf6bb4ba208f37126964ec2
Diffstat (limited to 'src')
-rw-r--r--src/func.c11
-rw-r--r--src/test_config.c12
2 files changed, 16 insertions, 7 deletions
diff --git a/src/func.c b/src/func.c
index c9a035a42..a8fbe104e 100644
--- a/src/func.c
+++ b/src/func.c
@@ -16,7 +16,7 @@
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
-** $Id: func.c,v 1.152 2007/05/08 20:37:39 drh Exp $
+** $Id: func.c,v 1.153 2007/05/09 08:24:44 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -540,14 +540,13 @@ static void likeFunc(
/* Limit the length of the LIKE or GLOB pattern to avoid problems
** of deep recursion and N*N behavior in patternCompare().
*/
- if( sqlite3_value_bytes(argv[1])>SQLITE_MAX_LIKE_PATTERN_LENGTH ){
+ if( sqlite3_value_bytes(argv[0])>SQLITE_MAX_LIKE_PATTERN_LENGTH ){
sqlite3_result_error(context, "LIKE or GLOB pattern too complex", -1);
return;
}
-
- zA = sqlite3_value_text(argv[0]);
- zB = sqlite3_value_text(argv[1]);
+ zB = sqlite3_value_text(argv[0]);
+ zA = sqlite3_value_text(argv[1]);
int escape = 0;
if( argc==3 ){
/* The escape character string must consist of a single UTF-8 character.
@@ -568,7 +567,7 @@ static void likeFunc(
sqlite3_like_count++;
#endif
- sqlite3_result_int(context, patternCompare(zA, zB, pInfo, escape));
+ sqlite3_result_int(context, patternCompare(zB, zA, pInfo, escape));
}
}
diff --git a/src/test_config.c b/src/test_config.c
index ff500e302..f7373ee19 100644
--- a/src/test_config.c
+++ b/src/test_config.c
@@ -16,7 +16,7 @@
** The focus of this file is providing the TCL testing layer
** access to compile-time constants.
**
-** $Id: test_config.c,v 1.1 2007/05/08 01:08:49 drh Exp $
+** $Id: test_config.c,v 1.2 2007/05/09 08:24:44 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "tcl.h"
@@ -377,6 +377,11 @@ static void set_options(Tcl_Interp *interp){
(char*)&sqlite_max_column, TCL_LINK_INT|TCL_LINK_READ_ONLY);
}
{
+ static int sqlite_max_sql_length = SQLITE_MAX_SQL_LENGTH;
+ Tcl_LinkVar(interp, "SQLITE_MAX_SQL_LENGTH",
+ (char*)&sqlite_max_sql_length, TCL_LINK_INT|TCL_LINK_READ_ONLY);
+ }
+ {
static int sqlite_max_expr_length = SQLITE_MAX_EXPR_LENGTH;
Tcl_LinkVar(interp, "SQLITE_MAX_EXPR_LENGTH",
(char*)&sqlite_max_expr_length, TCL_LINK_INT|TCL_LINK_READ_ONLY);
@@ -432,6 +437,11 @@ static void set_options(Tcl_Interp *interp){
Tcl_LinkVar(interp, "SQLITE_DEFAULT_FILE_FORMAT",
(char*)&sqlite_default_file_format, TCL_LINK_INT|TCL_LINK_READ_ONLY);
}
+ {
+ static int sqlite_max_like_pattern = SQLITE_MAX_LIKE_PATTERN_LENGTH;
+ Tcl_LinkVar(interp, "SQLITE_MAX_LIKE_PATTERN_LENGTH",
+ (char*)&sqlite_max_like_pattern, TCL_LINK_INT|TCL_LINK_READ_ONLY);
+ }
}