| Index: third_party/sqlite/memcmp.patch
|
| diff --git a/third_party/sqlite/memcmp.patch b/third_party/sqlite/memcmp.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ff562e822dbb407b488b95afcdacdcdade92a6cd
|
| --- /dev/null
|
| +++ b/third_party/sqlite/memcmp.patch
|
| @@ -0,0 +1,87 @@
|
| +http://crbug.com/178677 refers to potential buffer overruns in ASAN
|
| +due to memcmp() being used instead of strcmp() in SQLite. Reported to
|
| +SQLite team, resulting in http://www.sqlite.org/src/info/d73435587b .
|
| +This was backported into Chromium's version of SQLite, then this file
|
| +was generated using:
|
| + git diff --relative=third_party/sqlite/src --src-prefix='' --dst-prefix='' > third_party/sqlite/memcmp.patch
|
| +
|
| +
|
| +diff --git src/analyze.c src/analyze.c
|
| +index 17c1de8..2444e74 100644
|
| +--- src/analyze.c
|
| ++++ src/analyze.c
|
| +@@ -142,7 +142,7 @@ static void analyzeOneTable(
|
| + /* Do not gather statistics on views or virtual tables */
|
| + return;
|
| + }
|
| +- if( memcmp(pTab->zName, "sqlite_", 7)==0 ){
|
| ++ if( sqlite3_strnicmp(pTab->zName, "sqlite_", 7)==0 ){
|
| + /* Do not gather statistics on system tables */
|
| + return;
|
| + }
|
| +@@ -548,7 +548,7 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
|
| + if( pIndex==0 ) break;
|
| + pIndex->aiRowEst[i] = v;
|
| + if( *z==' ' ) z++;
|
| +- if( memcmp(z, "unordered", 10)==0 ){
|
| ++ if( strcmp(z, "unordered")==0 ){
|
| + pIndex->bUnordered = 1;
|
| + break;
|
| + }
|
| +diff --git src/build.c src/build.c
|
| +index 323a616..4f4f8ed 100644
|
| +--- src/build.c
|
| ++++ src/build.c
|
| +@@ -2480,7 +2480,7 @@ Index *sqlite3CreateIndex(
|
| + assert( pTab!=0 );
|
| + assert( pParse->nErr==0 );
|
| + if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
|
| +- && memcmp(&pTab->zName[7],"altertab_",9)!=0 ){
|
| ++ && sqlite3StrNICmp(&pTab->zName[7],"altertab_",9)!=0 ){
|
| + sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName);
|
| + goto exit_create_index;
|
| + }
|
| +diff --git src/expr.c src/expr.c
|
| +index 2699ae1..9d1193b 100644
|
| +--- src/expr.c
|
| ++++ src/expr.c
|
| +@@ -578,12 +578,10 @@ void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr){
|
| + ** has never appeared before, reuse the same variable number
|
| + */
|
| + int i;
|
| +- u32 n;
|
| +- n = sqlite3Strlen30(z);
|
| + for(i=0; i<pParse->nVarExpr; i++){
|
| + Expr *pE = pParse->apVarExpr[i];
|
| + assert( pE!=0 );
|
| +- if( memcmp(pE->u.zToken, z, n)==0 && pE->u.zToken[n]==0 ){
|
| ++ if( strcmp(pE->u.zToken, z)==0 ){
|
| + pExpr->iColumn = pE->iColumn;
|
| + break;
|
| + }
|
| +diff --git src/os_unix.c src/os_unix.c
|
| +index 804c588..77ffd8a 100644
|
| +--- src/os_unix.c
|
| ++++ src/os_unix.c
|
| +@@ -4506,7 +4506,7 @@ int fillInUnixFile(
|
| + OSTRACE(("OPEN %-3d %s\n", h, zFilename));
|
| + pNew->h = h;
|
| + pNew->zPath = zFilename;
|
| +- if( memcmp(pVfs->zName,"unix-excl",10)==0 ){
|
| ++ if( strcmp(pVfs->zName,"unix-excl")==0 ){
|
| + pNew->ctrlFlags = UNIXFILE_EXCL;
|
| + }else{
|
| + pNew->ctrlFlags = 0;
|
| +diff --git src/vdbeapi.c src/vdbeapi.c
|
| +index 90baacc..80ceb9f 100644
|
| +--- src/vdbeapi.c
|
| ++++ src/vdbeapi.c
|
| +@@ -1222,7 +1222,7 @@ int sqlite3VdbeParameterIndex(Vdbe *p, const char *zName, int nName){
|
| + if( zName ){
|
| + for(i=0; i<p->nVar; i++){
|
| + const char *z = p->azVar[i];
|
| +- if( z && memcmp(z,zName,nName)==0 && z[nName]==0 ){
|
| ++ if( z && strncmp(z,zName,nName)==0 && z[nName]==0 ){
|
| + return i+1;
|
| + }
|
| + }
|
|
|