summaryrefslogtreecommitdiffstats
path: root/third_party/sqlite/memcmp.patch
blob: ff562e822dbb407b488b95afcdacdcdade92a6cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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;
       }
     }