Fossil SCM
Remove another instance of strcpy() from FTS5 in SQLite 3.9.0, to mollify OpenBSD.
Commit
921d670350d3d083a6904aa233b90eaa2f77dbbd
Parent
d4a34293aeb890b…
2 files changed
+6
-4
+1
-1
+6
-4
| --- src/sqlite3.c | ||
| +++ src/sqlite3.c | ||
| @@ -325,11 +325,11 @@ | ||
| 325 | 325 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 326 | 326 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 327 | 327 | */ |
| 328 | 328 | #define SQLITE_VERSION "3.9.0" |
| 329 | 329 | #define SQLITE_VERSION_NUMBER 3009000 |
| 330 | -#define SQLITE_SOURCE_ID "2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc" | |
| 330 | +#define SQLITE_SOURCE_ID "2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406" | |
| 331 | 331 | |
| 332 | 332 | /* |
| 333 | 333 | ** CAPI3REF: Run-Time Library Version Numbers |
| 334 | 334 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 335 | 335 | ** |
| @@ -180399,19 +180399,21 @@ | ||
| 180399 | 180399 | fts5_tokenizer *pTokenizer, /* Tokenizer implementation */ |
| 180400 | 180400 | void(*xDestroy)(void*) /* Destructor for pUserData */ |
| 180401 | 180401 | ){ |
| 180402 | 180402 | Fts5Global *pGlobal = (Fts5Global*)pApi; |
| 180403 | 180403 | Fts5TokenizerModule *pNew; |
| 180404 | + int nName; /* Size of zName and its \0 terminator */ | |
| 180404 | 180405 | int nByte; /* Bytes of space to allocate */ |
| 180405 | 180406 | int rc = SQLITE_OK; |
| 180406 | 180407 | |
| 180407 | - nByte = sizeof(Fts5TokenizerModule) + strlen(zName) + 1; | |
| 180408 | + nName = (int)strlen(zName) + 1; | |
| 180409 | + nByte = sizeof(Fts5TokenizerModule) + nName; | |
| 180408 | 180410 | pNew = (Fts5TokenizerModule*)sqlite3_malloc(nByte); |
| 180409 | 180411 | if( pNew ){ |
| 180410 | 180412 | memset(pNew, 0, nByte); |
| 180411 | 180413 | pNew->zName = (char*)&pNew[1]; |
| 180412 | - strcpy(pNew->zName, zName); | |
| 180414 | + memcpy(pNew->zName, zName, nName); | |
| 180413 | 180415 | pNew->pUserData = pUserData; |
| 180414 | 180416 | pNew->x = *pTokenizer; |
| 180415 | 180417 | pNew->xDestroy = xDestroy; |
| 180416 | 180418 | pNew->pNext = pGlobal->pTok; |
| 180417 | 180419 | pGlobal->pTok = pNew; |
| @@ -180539,11 +180541,11 @@ | ||
| 180539 | 180541 | sqlite3_context *pCtx, /* Function call context */ |
| 180540 | 180542 | int nArg, /* Number of args */ |
| 180541 | 180543 | sqlite3_value **apVal /* Function arguments */ |
| 180542 | 180544 | ){ |
| 180543 | 180545 | assert( nArg==0 ); |
| 180544 | - sqlite3_result_text(pCtx, "fts5: 2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc", -1, SQLITE_TRANSIENT); | |
| 180546 | + sqlite3_result_text(pCtx, "fts5: 2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406", -1, SQLITE_TRANSIENT); | |
| 180545 | 180547 | } |
| 180546 | 180548 | |
| 180547 | 180549 | static int fts5Init(sqlite3 *db){ |
| 180548 | 180550 | static const sqlite3_module fts5Mod = { |
| 180549 | 180551 | /* iVersion */ 2, |
| 180550 | 180552 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -325,11 +325,11 @@ | |
| 325 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 326 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 327 | */ |
| 328 | #define SQLITE_VERSION "3.9.0" |
| 329 | #define SQLITE_VERSION_NUMBER 3009000 |
| 330 | #define SQLITE_SOURCE_ID "2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc" |
| 331 | |
| 332 | /* |
| 333 | ** CAPI3REF: Run-Time Library Version Numbers |
| 334 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 335 | ** |
| @@ -180399,19 +180399,21 @@ | |
| 180399 | fts5_tokenizer *pTokenizer, /* Tokenizer implementation */ |
| 180400 | void(*xDestroy)(void*) /* Destructor for pUserData */ |
| 180401 | ){ |
| 180402 | Fts5Global *pGlobal = (Fts5Global*)pApi; |
| 180403 | Fts5TokenizerModule *pNew; |
| 180404 | int nByte; /* Bytes of space to allocate */ |
| 180405 | int rc = SQLITE_OK; |
| 180406 | |
| 180407 | nByte = sizeof(Fts5TokenizerModule) + strlen(zName) + 1; |
| 180408 | pNew = (Fts5TokenizerModule*)sqlite3_malloc(nByte); |
| 180409 | if( pNew ){ |
| 180410 | memset(pNew, 0, nByte); |
| 180411 | pNew->zName = (char*)&pNew[1]; |
| 180412 | strcpy(pNew->zName, zName); |
| 180413 | pNew->pUserData = pUserData; |
| 180414 | pNew->x = *pTokenizer; |
| 180415 | pNew->xDestroy = xDestroy; |
| 180416 | pNew->pNext = pGlobal->pTok; |
| 180417 | pGlobal->pTok = pNew; |
| @@ -180539,11 +180541,11 @@ | |
| 180539 | sqlite3_context *pCtx, /* Function call context */ |
| 180540 | int nArg, /* Number of args */ |
| 180541 | sqlite3_value **apVal /* Function arguments */ |
| 180542 | ){ |
| 180543 | assert( nArg==0 ); |
| 180544 | sqlite3_result_text(pCtx, "fts5: 2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc", -1, SQLITE_TRANSIENT); |
| 180545 | } |
| 180546 | |
| 180547 | static int fts5Init(sqlite3 *db){ |
| 180548 | static const sqlite3_module fts5Mod = { |
| 180549 | /* iVersion */ 2, |
| 180550 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -325,11 +325,11 @@ | |
| 325 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 326 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 327 | */ |
| 328 | #define SQLITE_VERSION "3.9.0" |
| 329 | #define SQLITE_VERSION_NUMBER 3009000 |
| 330 | #define SQLITE_SOURCE_ID "2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406" |
| 331 | |
| 332 | /* |
| 333 | ** CAPI3REF: Run-Time Library Version Numbers |
| 334 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 335 | ** |
| @@ -180399,19 +180399,21 @@ | |
| 180399 | fts5_tokenizer *pTokenizer, /* Tokenizer implementation */ |
| 180400 | void(*xDestroy)(void*) /* Destructor for pUserData */ |
| 180401 | ){ |
| 180402 | Fts5Global *pGlobal = (Fts5Global*)pApi; |
| 180403 | Fts5TokenizerModule *pNew; |
| 180404 | int nName; /* Size of zName and its \0 terminator */ |
| 180405 | int nByte; /* Bytes of space to allocate */ |
| 180406 | int rc = SQLITE_OK; |
| 180407 | |
| 180408 | nName = (int)strlen(zName) + 1; |
| 180409 | nByte = sizeof(Fts5TokenizerModule) + nName; |
| 180410 | pNew = (Fts5TokenizerModule*)sqlite3_malloc(nByte); |
| 180411 | if( pNew ){ |
| 180412 | memset(pNew, 0, nByte); |
| 180413 | pNew->zName = (char*)&pNew[1]; |
| 180414 | memcpy(pNew->zName, zName, nName); |
| 180415 | pNew->pUserData = pUserData; |
| 180416 | pNew->x = *pTokenizer; |
| 180417 | pNew->xDestroy = xDestroy; |
| 180418 | pNew->pNext = pGlobal->pTok; |
| 180419 | pGlobal->pTok = pNew; |
| @@ -180539,11 +180541,11 @@ | |
| 180541 | sqlite3_context *pCtx, /* Function call context */ |
| 180542 | int nArg, /* Number of args */ |
| 180543 | sqlite3_value **apVal /* Function arguments */ |
| 180544 | ){ |
| 180545 | assert( nArg==0 ); |
| 180546 | sqlite3_result_text(pCtx, "fts5: 2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406", -1, SQLITE_TRANSIENT); |
| 180547 | } |
| 180548 | |
| 180549 | static int fts5Init(sqlite3 *db){ |
| 180550 | static const sqlite3_module fts5Mod = { |
| 180551 | /* iVersion */ 2, |
| 180552 |
+1
-1
| --- src/sqlite3.h | ||
| +++ src/sqlite3.h | ||
| @@ -111,11 +111,11 @@ | ||
| 111 | 111 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 112 | 112 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 113 | 113 | */ |
| 114 | 114 | #define SQLITE_VERSION "3.9.0" |
| 115 | 115 | #define SQLITE_VERSION_NUMBER 3009000 |
| 116 | -#define SQLITE_SOURCE_ID "2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc" | |
| 116 | +#define SQLITE_SOURCE_ID "2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406" | |
| 117 | 117 | |
| 118 | 118 | /* |
| 119 | 119 | ** CAPI3REF: Run-Time Library Version Numbers |
| 120 | 120 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 121 | 121 | ** |
| 122 | 122 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -111,11 +111,11 @@ | |
| 111 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 112 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 113 | */ |
| 114 | #define SQLITE_VERSION "3.9.0" |
| 115 | #define SQLITE_VERSION_NUMBER 3009000 |
| 116 | #define SQLITE_SOURCE_ID "2015-10-10 15:11:49 bc24a5bbfd95df3518611b221de69b73776111bc" |
| 117 | |
| 118 | /* |
| 119 | ** CAPI3REF: Run-Time Library Version Numbers |
| 120 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 121 | ** |
| 122 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -111,11 +111,11 @@ | |
| 111 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 112 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 113 | */ |
| 114 | #define SQLITE_VERSION "3.9.0" |
| 115 | #define SQLITE_VERSION_NUMBER 3009000 |
| 116 | #define SQLITE_SOURCE_ID "2015-10-10 15:57:20 35e6248abb4435a8b26d270092b856beff867406" |
| 117 | |
| 118 | /* |
| 119 | ** CAPI3REF: Run-Time Library Version Numbers |
| 120 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 121 | ** |
| 122 |