Fossil SCM
Update SQLite from upstream to fix a potential crash bug if Fossil were compiled with SQLITE_ENABLE_STAT3.
Commit
1a52914b38d6d6f7f3b1c440f1b737034dd0e3bd
Parent
baa1ebb7d981bc7…
2 files changed
+28
-29
+1
-1
+28
-29
| --- src/sqlite3.c | ||
| +++ src/sqlite3.c | ||
| @@ -673,11 +673,11 @@ | ||
| 673 | 673 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 674 | 674 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 675 | 675 | */ |
| 676 | 676 | #define SQLITE_VERSION "3.7.16" |
| 677 | 677 | #define SQLITE_VERSION_NUMBER 3007016 |
| 678 | -#define SQLITE_SOURCE_ID "2013-01-07 13:26:23 0a1207c895d9f77586a3a2a4965175909be90503" | |
| 678 | +#define SQLITE_SOURCE_ID "2013-01-08 12:48:10 cda790280a52d65f98a45bacb9123367b159ac7c" | |
| 679 | 679 | |
| 680 | 680 | /* |
| 681 | 681 | ** CAPI3REF: Run-Time Library Version Numbers |
| 682 | 682 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 683 | 683 | ** |
| @@ -73117,48 +73117,47 @@ | ||
| 73117 | 73117 | int wrong_num_args = 0; /* True if wrong number of arguments */ |
| 73118 | 73118 | int is_agg = 0; /* True if is an aggregate function */ |
| 73119 | 73119 | int auth; /* Authorization to use the function */ |
| 73120 | 73120 | int nId; /* Number of characters in function name */ |
| 73121 | 73121 | const char *zId; /* The function name. */ |
| 73122 | + FuncDef *pDef; /* Information about the function */ | |
| 73122 | 73123 | u8 enc = ENC(pParse->db); /* The database encoding */ |
| 73123 | 73124 | |
| 73124 | 73125 | testcase( pExpr->op==TK_CONST_FUNC ); |
| 73125 | 73126 | assert( !ExprHasProperty(pExpr, EP_xIsSelect) ); |
| 73126 | 73127 | zId = pExpr->u.zToken; |
| 73127 | 73128 | nId = sqlite3Strlen30(zId); |
| 73128 | - if( pParse->db->init.busy==0 ){ | |
| 73129 | - FuncDef *pDef = sqlite3FindFunction(pParse->db, zId, nId, n, enc, 0); | |
| 73130 | - if( pDef==0 ){ | |
| 73131 | - pDef = sqlite3FindFunction(pParse->db, zId, nId, -2, enc, 0); | |
| 73132 | - if( pDef==0 ){ | |
| 73133 | - no_such_func = 1; | |
| 73134 | - }else{ | |
| 73135 | - wrong_num_args = 1; | |
| 73136 | - } | |
| 73137 | - }else{ | |
| 73138 | - is_agg = pDef->xFunc==0; | |
| 73139 | - } | |
| 73140 | -#ifndef SQLITE_OMIT_AUTHORIZATION | |
| 73141 | - if( pDef ){ | |
| 73142 | - auth = sqlite3AuthCheck(pParse, SQLITE_FUNCTION, 0, pDef->zName, 0); | |
| 73143 | - if( auth!=SQLITE_OK ){ | |
| 73144 | - if( auth==SQLITE_DENY ){ | |
| 73145 | - sqlite3ErrorMsg(pParse, "not authorized to use function: %s", | |
| 73146 | - pDef->zName); | |
| 73147 | - pNC->nErr++; | |
| 73148 | - } | |
| 73149 | - pExpr->op = TK_NULL; | |
| 73150 | - return WRC_Prune; | |
| 73151 | - } | |
| 73152 | - } | |
| 73153 | -#endif | |
| 73154 | - } | |
| 73129 | + pDef = sqlite3FindFunction(pParse->db, zId, nId, n, enc, 0); | |
| 73130 | + if( pDef==0 ){ | |
| 73131 | + pDef = sqlite3FindFunction(pParse->db, zId, nId, -2, enc, 0); | |
| 73132 | + if( pDef==0 ){ | |
| 73133 | + no_such_func = 1; | |
| 73134 | + }else{ | |
| 73135 | + wrong_num_args = 1; | |
| 73136 | + } | |
| 73137 | + }else{ | |
| 73138 | + is_agg = pDef->xFunc==0; | |
| 73139 | + } | |
| 73140 | +#ifndef SQLITE_OMIT_AUTHORIZATION | |
| 73141 | + if( pDef ){ | |
| 73142 | + auth = sqlite3AuthCheck(pParse, SQLITE_FUNCTION, 0, pDef->zName, 0); | |
| 73143 | + if( auth!=SQLITE_OK ){ | |
| 73144 | + if( auth==SQLITE_DENY ){ | |
| 73145 | + sqlite3ErrorMsg(pParse, "not authorized to use function: %s", | |
| 73146 | + pDef->zName); | |
| 73147 | + pNC->nErr++; | |
| 73148 | + } | |
| 73149 | + pExpr->op = TK_NULL; | |
| 73150 | + return WRC_Prune; | |
| 73151 | + } | |
| 73152 | + } | |
| 73153 | +#endif | |
| 73155 | 73154 | if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){ |
| 73156 | 73155 | sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId); |
| 73157 | 73156 | pNC->nErr++; |
| 73158 | 73157 | is_agg = 0; |
| 73159 | - }else if( no_such_func ){ | |
| 73158 | + }else if( no_such_func && pParse->db->init.busy==0 ){ | |
| 73160 | 73159 | sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId); |
| 73161 | 73160 | pNC->nErr++; |
| 73162 | 73161 | }else if( wrong_num_args ){ |
| 73163 | 73162 | sqlite3ErrorMsg(pParse,"wrong number of arguments to function %.*s()", |
| 73164 | 73163 | nId, zId); |
| 73165 | 73164 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -673,11 +673,11 @@ | |
| 673 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 674 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 675 | */ |
| 676 | #define SQLITE_VERSION "3.7.16" |
| 677 | #define SQLITE_VERSION_NUMBER 3007016 |
| 678 | #define SQLITE_SOURCE_ID "2013-01-07 13:26:23 0a1207c895d9f77586a3a2a4965175909be90503" |
| 679 | |
| 680 | /* |
| 681 | ** CAPI3REF: Run-Time Library Version Numbers |
| 682 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 683 | ** |
| @@ -73117,48 +73117,47 @@ | |
| 73117 | int wrong_num_args = 0; /* True if wrong number of arguments */ |
| 73118 | int is_agg = 0; /* True if is an aggregate function */ |
| 73119 | int auth; /* Authorization to use the function */ |
| 73120 | int nId; /* Number of characters in function name */ |
| 73121 | const char *zId; /* The function name. */ |
| 73122 | u8 enc = ENC(pParse->db); /* The database encoding */ |
| 73123 | |
| 73124 | testcase( pExpr->op==TK_CONST_FUNC ); |
| 73125 | assert( !ExprHasProperty(pExpr, EP_xIsSelect) ); |
| 73126 | zId = pExpr->u.zToken; |
| 73127 | nId = sqlite3Strlen30(zId); |
| 73128 | if( pParse->db->init.busy==0 ){ |
| 73129 | FuncDef *pDef = sqlite3FindFunction(pParse->db, zId, nId, n, enc, 0); |
| 73130 | if( pDef==0 ){ |
| 73131 | pDef = sqlite3FindFunction(pParse->db, zId, nId, -2, enc, 0); |
| 73132 | if( pDef==0 ){ |
| 73133 | no_such_func = 1; |
| 73134 | }else{ |
| 73135 | wrong_num_args = 1; |
| 73136 | } |
| 73137 | }else{ |
| 73138 | is_agg = pDef->xFunc==0; |
| 73139 | } |
| 73140 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 73141 | if( pDef ){ |
| 73142 | auth = sqlite3AuthCheck(pParse, SQLITE_FUNCTION, 0, pDef->zName, 0); |
| 73143 | if( auth!=SQLITE_OK ){ |
| 73144 | if( auth==SQLITE_DENY ){ |
| 73145 | sqlite3ErrorMsg(pParse, "not authorized to use function: %s", |
| 73146 | pDef->zName); |
| 73147 | pNC->nErr++; |
| 73148 | } |
| 73149 | pExpr->op = TK_NULL; |
| 73150 | return WRC_Prune; |
| 73151 | } |
| 73152 | } |
| 73153 | #endif |
| 73154 | } |
| 73155 | if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){ |
| 73156 | sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId); |
| 73157 | pNC->nErr++; |
| 73158 | is_agg = 0; |
| 73159 | }else if( no_such_func ){ |
| 73160 | sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId); |
| 73161 | pNC->nErr++; |
| 73162 | }else if( wrong_num_args ){ |
| 73163 | sqlite3ErrorMsg(pParse,"wrong number of arguments to function %.*s()", |
| 73164 | nId, zId); |
| 73165 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -673,11 +673,11 @@ | |
| 673 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 674 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 675 | */ |
| 676 | #define SQLITE_VERSION "3.7.16" |
| 677 | #define SQLITE_VERSION_NUMBER 3007016 |
| 678 | #define SQLITE_SOURCE_ID "2013-01-08 12:48:10 cda790280a52d65f98a45bacb9123367b159ac7c" |
| 679 | |
| 680 | /* |
| 681 | ** CAPI3REF: Run-Time Library Version Numbers |
| 682 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 683 | ** |
| @@ -73117,48 +73117,47 @@ | |
| 73117 | int wrong_num_args = 0; /* True if wrong number of arguments */ |
| 73118 | int is_agg = 0; /* True if is an aggregate function */ |
| 73119 | int auth; /* Authorization to use the function */ |
| 73120 | int nId; /* Number of characters in function name */ |
| 73121 | const char *zId; /* The function name. */ |
| 73122 | FuncDef *pDef; /* Information about the function */ |
| 73123 | u8 enc = ENC(pParse->db); /* The database encoding */ |
| 73124 | |
| 73125 | testcase( pExpr->op==TK_CONST_FUNC ); |
| 73126 | assert( !ExprHasProperty(pExpr, EP_xIsSelect) ); |
| 73127 | zId = pExpr->u.zToken; |
| 73128 | nId = sqlite3Strlen30(zId); |
| 73129 | pDef = sqlite3FindFunction(pParse->db, zId, nId, n, enc, 0); |
| 73130 | if( pDef==0 ){ |
| 73131 | pDef = sqlite3FindFunction(pParse->db, zId, nId, -2, enc, 0); |
| 73132 | if( pDef==0 ){ |
| 73133 | no_such_func = 1; |
| 73134 | }else{ |
| 73135 | wrong_num_args = 1; |
| 73136 | } |
| 73137 | }else{ |
| 73138 | is_agg = pDef->xFunc==0; |
| 73139 | } |
| 73140 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 73141 | if( pDef ){ |
| 73142 | auth = sqlite3AuthCheck(pParse, SQLITE_FUNCTION, 0, pDef->zName, 0); |
| 73143 | if( auth!=SQLITE_OK ){ |
| 73144 | if( auth==SQLITE_DENY ){ |
| 73145 | sqlite3ErrorMsg(pParse, "not authorized to use function: %s", |
| 73146 | pDef->zName); |
| 73147 | pNC->nErr++; |
| 73148 | } |
| 73149 | pExpr->op = TK_NULL; |
| 73150 | return WRC_Prune; |
| 73151 | } |
| 73152 | } |
| 73153 | #endif |
| 73154 | if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){ |
| 73155 | sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId); |
| 73156 | pNC->nErr++; |
| 73157 | is_agg = 0; |
| 73158 | }else if( no_such_func && pParse->db->init.busy==0 ){ |
| 73159 | sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId); |
| 73160 | pNC->nErr++; |
| 73161 | }else if( wrong_num_args ){ |
| 73162 | sqlite3ErrorMsg(pParse,"wrong number of arguments to function %.*s()", |
| 73163 | nId, zId); |
| 73164 |
+1
-1
| --- src/sqlite3.h | ||
| +++ src/sqlite3.h | ||
| @@ -107,11 +107,11 @@ | ||
| 107 | 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | 109 | */ |
| 110 | 110 | #define SQLITE_VERSION "3.7.16" |
| 111 | 111 | #define SQLITE_VERSION_NUMBER 3007016 |
| 112 | -#define SQLITE_SOURCE_ID "2013-01-07 13:26:23 0a1207c895d9f77586a3a2a4965175909be90503" | |
| 112 | +#define SQLITE_SOURCE_ID "2013-01-08 12:48:10 cda790280a52d65f98a45bacb9123367b159ac7c" | |
| 113 | 113 | |
| 114 | 114 | /* |
| 115 | 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | 117 | ** |
| 118 | 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.16" |
| 111 | #define SQLITE_VERSION_NUMBER 3007016 |
| 112 | #define SQLITE_SOURCE_ID "2013-01-07 13:26:23 0a1207c895d9f77586a3a2a4965175909be90503" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.16" |
| 111 | #define SQLITE_VERSION_NUMBER 3007016 |
| 112 | #define SQLITE_SOURCE_ID "2013-01-08 12:48:10 cda790280a52d65f98a45bacb9123367b159ac7c" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |