Fossil SCM
Replace calls to strcpy() with a tree-local strcpy() clone to squelch unwarranted link-time warnings when building on OpenBSD. There is still one strcpy() instance in the upstream extsrc/shell.c.
Commit
c0b9b4487f0318093ca3ffcbd95f408a57bfb4d95b70721a895bbc8914b9f0c8
Parent
24eb1822483412f…
6 files changed
+1
-1
+1
-1
+6
+6
-1
+6
-1
+6
-1
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1435,11 +1435,11 @@ | ||
| 1435 | 1435 | if( sqlite3_user_data(context)==0 ){ |
| 1436 | 1436 | zTemp = obscure((char*)zIn); |
| 1437 | 1437 | }else{ |
| 1438 | 1438 | zTemp = unobscure((char*)zIn); |
| 1439 | 1439 | } |
| 1440 | - strcpy(zOut, zTemp); | |
| 1440 | + fossil_strcpy(zOut, zTemp); | |
| 1441 | 1441 | fossil_free(zTemp); |
| 1442 | 1442 | sqlite3_result_text(context, zOut, strlen(zOut), sqlite3_free); |
| 1443 | 1443 | } |
| 1444 | 1444 | |
| 1445 | 1445 | /* |
| 1446 | 1446 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1435,11 +1435,11 @@ | |
| 1435 | if( sqlite3_user_data(context)==0 ){ |
| 1436 | zTemp = obscure((char*)zIn); |
| 1437 | }else{ |
| 1438 | zTemp = unobscure((char*)zIn); |
| 1439 | } |
| 1440 | strcpy(zOut, zTemp); |
| 1441 | fossil_free(zTemp); |
| 1442 | sqlite3_result_text(context, zOut, strlen(zOut), sqlite3_free); |
| 1443 | } |
| 1444 | |
| 1445 | /* |
| 1446 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1435,11 +1435,11 @@ | |
| 1435 | if( sqlite3_user_data(context)==0 ){ |
| 1436 | zTemp = obscure((char*)zIn); |
| 1437 | }else{ |
| 1438 | zTemp = unobscure((char*)zIn); |
| 1439 | } |
| 1440 | fossil_strcpy(zOut, zTemp); |
| 1441 | fossil_free(zTemp); |
| 1442 | sqlite3_result_text(context, zOut, strlen(zOut), sqlite3_free); |
| 1443 | } |
| 1444 | |
| 1445 | /* |
| 1446 |
+1
-1
| --- src/style.c | ||
| +++ src/style.c | ||
| @@ -989,11 +989,11 @@ | ||
| 989 | 989 | }else{ |
| 990 | 990 | @ <a class="label sml-%s(zClass)" href="%h(p->zLink)">%h(p->zLabel)</a> |
| 991 | 991 | } |
| 992 | 992 | } |
| 993 | 993 | } |
| 994 | - strcpy(zClass,"smc-"); /* common prefix for submenu controls */ | |
| 994 | + fossil_strcpy(zClass,"smc-"); /* common prefix for submenu controls */ | |
| 995 | 995 | for(i=0; i<nSubmenuCtrl; i++){ |
| 996 | 996 | const char *zQPN = aSubmenuCtrl[i].zName; |
| 997 | 997 | const char *zDisabled = ""; |
| 998 | 998 | const char *zXtraClass = ""; |
| 999 | 999 | if( aSubmenuCtrl[i].eVisible & STYLE_DISABLED ){ |
| 1000 | 1000 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -989,11 +989,11 @@ | |
| 989 | }else{ |
| 990 | @ <a class="label sml-%s(zClass)" href="%h(p->zLink)">%h(p->zLabel)</a> |
| 991 | } |
| 992 | } |
| 993 | } |
| 994 | strcpy(zClass,"smc-"); /* common prefix for submenu controls */ |
| 995 | for(i=0; i<nSubmenuCtrl; i++){ |
| 996 | const char *zQPN = aSubmenuCtrl[i].zName; |
| 997 | const char *zDisabled = ""; |
| 998 | const char *zXtraClass = ""; |
| 999 | if( aSubmenuCtrl[i].eVisible & STYLE_DISABLED ){ |
| 1000 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -989,11 +989,11 @@ | |
| 989 | }else{ |
| 990 | @ <a class="label sml-%s(zClass)" href="%h(p->zLink)">%h(p->zLabel)</a> |
| 991 | } |
| 992 | } |
| 993 | } |
| 994 | fossil_strcpy(zClass,"smc-"); /* common prefix for submenu controls */ |
| 995 | for(i=0; i<nSubmenuCtrl; i++){ |
| 996 | const char *zQPN = aSubmenuCtrl[i].zName; |
| 997 | const char *zDisabled = ""; |
| 998 | const char *zXtraClass = ""; |
| 999 | if( aSubmenuCtrl[i].eVisible & STYLE_DISABLED ){ |
| 1000 |
+6
| --- src/util.c | ||
| +++ src/util.c | ||
| @@ -170,10 +170,16 @@ | ||
| 170 | 170 | char *fossil_strdup_nn(const char *zOrig){ |
| 171 | 171 | if( zOrig==0 ) return fossil_strndup("", 0); |
| 172 | 172 | return fossil_strndup(zOrig, -1); |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | +/* | |
| 176 | +** strcpy() workalike to squelch an unwarranted warning from OpenBSD. | |
| 177 | +*/ | |
| 178 | +void fossil_strcpy(char *dest, const char *src){ | |
| 179 | + while( (*(dest++) = *(src++))!=0 ){} | |
| 180 | +} | |
| 175 | 181 | |
| 176 | 182 | /* |
| 177 | 183 | ** Translate every upper-case character in the input string into |
| 178 | 184 | ** its equivalent lower-case. |
| 179 | 185 | */ |
| 180 | 186 |
| --- src/util.c | |
| +++ src/util.c | |
| @@ -170,10 +170,16 @@ | |
| 170 | char *fossil_strdup_nn(const char *zOrig){ |
| 171 | if( zOrig==0 ) return fossil_strndup("", 0); |
| 172 | return fossil_strndup(zOrig, -1); |
| 173 | } |
| 174 | |
| 175 | |
| 176 | /* |
| 177 | ** Translate every upper-case character in the input string into |
| 178 | ** its equivalent lower-case. |
| 179 | */ |
| 180 |
| --- src/util.c | |
| +++ src/util.c | |
| @@ -170,10 +170,16 @@ | |
| 170 | char *fossil_strdup_nn(const char *zOrig){ |
| 171 | if( zOrig==0 ) return fossil_strndup("", 0); |
| 172 | return fossil_strndup(zOrig, -1); |
| 173 | } |
| 174 | |
| 175 | /* |
| 176 | ** strcpy() workalike to squelch an unwarranted warning from OpenBSD. |
| 177 | */ |
| 178 | void fossil_strcpy(char *dest, const char *src){ |
| 179 | while( (*(dest++) = *(src++))!=0 ){} |
| 180 | } |
| 181 | |
| 182 | /* |
| 183 | ** Translate every upper-case character in the input string into |
| 184 | ** its equivalent lower-case. |
| 185 | */ |
| 186 |
+6
-1
| --- tools/makeheaders.c | ||
| +++ tools/makeheaders.c | ||
| @@ -3166,10 +3166,15 @@ | ||
| 3166 | 3166 | |
| 3167 | 3167 | /* Done! |
| 3168 | 3168 | */ |
| 3169 | 3169 | return pFile; |
| 3170 | 3170 | } |
| 3171 | + | |
| 3172 | +/* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ | |
| 3173 | +static void local_strcpy(char *dest, const char *src){ | |
| 3174 | + while( (*(dest++) = *(src++))!=0 ){} | |
| 3175 | +} | |
| 3171 | 3176 | |
| 3172 | 3177 | /* MS-Windows and MS-DOS both have the following serious OS bug: the |
| 3173 | 3178 | ** length of a command line is severely restricted. But this program |
| 3174 | 3179 | ** occasionally requires long command lines. Hence the following |
| 3175 | 3180 | ** work around. |
| @@ -3243,11 +3248,11 @@ | ||
| 3243 | 3248 | } |
| 3244 | 3249 | if( zNew ){ |
| 3245 | 3250 | int j = nNew + index; |
| 3246 | 3251 | zNew[j] = malloc( n + 1 ); |
| 3247 | 3252 | if( zNew[j] ){ |
| 3248 | - strcpy( zNew[j], zBuf ); | |
| 3253 | + local_strcpy( zNew[j], zBuf ); | |
| 3249 | 3254 | } |
| 3250 | 3255 | } |
| 3251 | 3256 | } |
| 3252 | 3257 | } |
| 3253 | 3258 | fclose(in); |
| 3254 | 3259 |
| --- tools/makeheaders.c | |
| +++ tools/makeheaders.c | |
| @@ -3166,10 +3166,15 @@ | |
| 3166 | |
| 3167 | /* Done! |
| 3168 | */ |
| 3169 | return pFile; |
| 3170 | } |
| 3171 | |
| 3172 | /* MS-Windows and MS-DOS both have the following serious OS bug: the |
| 3173 | ** length of a command line is severely restricted. But this program |
| 3174 | ** occasionally requires long command lines. Hence the following |
| 3175 | ** work around. |
| @@ -3243,11 +3248,11 @@ | |
| 3243 | } |
| 3244 | if( zNew ){ |
| 3245 | int j = nNew + index; |
| 3246 | zNew[j] = malloc( n + 1 ); |
| 3247 | if( zNew[j] ){ |
| 3248 | strcpy( zNew[j], zBuf ); |
| 3249 | } |
| 3250 | } |
| 3251 | } |
| 3252 | } |
| 3253 | fclose(in); |
| 3254 |
| --- tools/makeheaders.c | |
| +++ tools/makeheaders.c | |
| @@ -3166,10 +3166,15 @@ | |
| 3166 | |
| 3167 | /* Done! |
| 3168 | */ |
| 3169 | return pFile; |
| 3170 | } |
| 3171 | |
| 3172 | /* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ |
| 3173 | static void local_strcpy(char *dest, const char *src){ |
| 3174 | while( (*(dest++) = *(src++))!=0 ){} |
| 3175 | } |
| 3176 | |
| 3177 | /* MS-Windows and MS-DOS both have the following serious OS bug: the |
| 3178 | ** length of a command line is severely restricted. But this program |
| 3179 | ** occasionally requires long command lines. Hence the following |
| 3180 | ** work around. |
| @@ -3243,11 +3248,11 @@ | |
| 3248 | } |
| 3249 | if( zNew ){ |
| 3250 | int j = nNew + index; |
| 3251 | zNew[j] = malloc( n + 1 ); |
| 3252 | if( zNew[j] ){ |
| 3253 | local_strcpy( zNew[j], zBuf ); |
| 3254 | } |
| 3255 | } |
| 3256 | } |
| 3257 | } |
| 3258 | fclose(in); |
| 3259 |
+6
-1
| --- tools/mkindex.c | ||
| +++ tools/mkindex.c | ||
| @@ -327,10 +327,15 @@ | ||
| 327 | 327 | while( fossil_isspace(z[0]) ) z++; |
| 328 | 328 | len = (int)strlen(z); |
| 329 | 329 | while( len>0 && fossil_isspace(z[len-1]) ){ len--; } |
| 330 | 330 | aEntry[nUsed-1].zDflt = string_dup(z,len); |
| 331 | 331 | } |
| 332 | + | |
| 333 | +/* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ | |
| 334 | +static void local_strcpy(char *dest, const char *src){ | |
| 335 | + while( (*(dest++) = *(src++))!=0 ){} | |
| 336 | +} | |
| 332 | 337 | |
| 333 | 338 | /* |
| 334 | 339 | ** Scan a line for a function that implements a web page or command. |
| 335 | 340 | */ |
| 336 | 341 | void scan_for_func(char *zLine){ |
| @@ -349,11 +354,11 @@ | ||
| 349 | 354 | ){ |
| 350 | 355 | if( zLine[2]=='\n' ){ |
| 351 | 356 | zHelp[nHelp++] = '\n'; |
| 352 | 357 | }else{ |
| 353 | 358 | if( strncmp(&zLine[3], "Usage: ", 6)==0 ) nHelp = 0; |
| 354 | - strcpy(&zHelp[nHelp], &zLine[3]); | |
| 359 | + local_strcpy(&zHelp[nHelp], &zLine[3]); | |
| 355 | 360 | nHelp += strlen(&zHelp[nHelp]); |
| 356 | 361 | } |
| 357 | 362 | return; |
| 358 | 363 | } |
| 359 | 364 | for(i=0; fossil_isspace(zLine[i]); i++){} |
| 360 | 365 |
| --- tools/mkindex.c | |
| +++ tools/mkindex.c | |
| @@ -327,10 +327,15 @@ | |
| 327 | while( fossil_isspace(z[0]) ) z++; |
| 328 | len = (int)strlen(z); |
| 329 | while( len>0 && fossil_isspace(z[len-1]) ){ len--; } |
| 330 | aEntry[nUsed-1].zDflt = string_dup(z,len); |
| 331 | } |
| 332 | |
| 333 | /* |
| 334 | ** Scan a line for a function that implements a web page or command. |
| 335 | */ |
| 336 | void scan_for_func(char *zLine){ |
| @@ -349,11 +354,11 @@ | |
| 349 | ){ |
| 350 | if( zLine[2]=='\n' ){ |
| 351 | zHelp[nHelp++] = '\n'; |
| 352 | }else{ |
| 353 | if( strncmp(&zLine[3], "Usage: ", 6)==0 ) nHelp = 0; |
| 354 | strcpy(&zHelp[nHelp], &zLine[3]); |
| 355 | nHelp += strlen(&zHelp[nHelp]); |
| 356 | } |
| 357 | return; |
| 358 | } |
| 359 | for(i=0; fossil_isspace(zLine[i]); i++){} |
| 360 |
| --- tools/mkindex.c | |
| +++ tools/mkindex.c | |
| @@ -327,10 +327,15 @@ | |
| 327 | while( fossil_isspace(z[0]) ) z++; |
| 328 | len = (int)strlen(z); |
| 329 | while( len>0 && fossil_isspace(z[len-1]) ){ len--; } |
| 330 | aEntry[nUsed-1].zDflt = string_dup(z,len); |
| 331 | } |
| 332 | |
| 333 | /* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ |
| 334 | static void local_strcpy(char *dest, const char *src){ |
| 335 | while( (*(dest++) = *(src++))!=0 ){} |
| 336 | } |
| 337 | |
| 338 | /* |
| 339 | ** Scan a line for a function that implements a web page or command. |
| 340 | */ |
| 341 | void scan_for_func(char *zLine){ |
| @@ -349,11 +354,11 @@ | |
| 354 | ){ |
| 355 | if( zLine[2]=='\n' ){ |
| 356 | zHelp[nHelp++] = '\n'; |
| 357 | }else{ |
| 358 | if( strncmp(&zLine[3], "Usage: ", 6)==0 ) nHelp = 0; |
| 359 | local_strcpy(&zHelp[nHelp], &zLine[3]); |
| 360 | nHelp += strlen(&zHelp[nHelp]); |
| 361 | } |
| 362 | return; |
| 363 | } |
| 364 | for(i=0; fossil_isspace(zLine[i]); i++){} |
| 365 |
+6
-1
| --- tools/mkversion.c | ||
| +++ tools/mkversion.c | ||
| @@ -81,10 +81,15 @@ | ||
| 81 | 81 | zOut[n] = "0123456789abcdef"[(t>>4)&0xf]; |
| 82 | 82 | zOut[n+1] = "0123456789abcdef"[t&0xf]; |
| 83 | 83 | } |
| 84 | 84 | zOut[n] = 0; |
| 85 | 85 | } |
| 86 | + | |
| 87 | +/* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ | |
| 88 | +static void local_strcpy(char *dest, const char *src){ | |
| 89 | + while( (*(dest++) = *(src++))!=0 ){} | |
| 90 | +} | |
| 86 | 91 | |
| 87 | 92 | int main(int argc, char *argv[]){ |
| 88 | 93 | FILE *m,*u,*v; |
| 89 | 94 | char *z; |
| 90 | 95 | #if defined(__DMC__) /* e.g. 0x857 */ |
| @@ -173,11 +178,11 @@ | ||
| 173 | 178 | z++; |
| 174 | 179 | } |
| 175 | 180 | for(z=vx; z[0]=='0'; z++){} |
| 176 | 181 | printf("#define RELEASE_VERSION_NUMBER %d%02d%02d\n", vn[0], vn[1], vn[2]); |
| 177 | 182 | memset(vx,0,sizeof(vx)); |
| 178 | - strcpy(vx,b); | |
| 183 | + local_strcpy(vx,b); | |
| 179 | 184 | for(z=vx; z[0]; z++){ |
| 180 | 185 | if( z[0]=='-' ){ |
| 181 | 186 | z[0] = 0; |
| 182 | 187 | break; |
| 183 | 188 | } |
| 184 | 189 |
| --- tools/mkversion.c | |
| +++ tools/mkversion.c | |
| @@ -81,10 +81,15 @@ | |
| 81 | zOut[n] = "0123456789abcdef"[(t>>4)&0xf]; |
| 82 | zOut[n+1] = "0123456789abcdef"[t&0xf]; |
| 83 | } |
| 84 | zOut[n] = 0; |
| 85 | } |
| 86 | |
| 87 | int main(int argc, char *argv[]){ |
| 88 | FILE *m,*u,*v; |
| 89 | char *z; |
| 90 | #if defined(__DMC__) /* e.g. 0x857 */ |
| @@ -173,11 +178,11 @@ | |
| 173 | z++; |
| 174 | } |
| 175 | for(z=vx; z[0]=='0'; z++){} |
| 176 | printf("#define RELEASE_VERSION_NUMBER %d%02d%02d\n", vn[0], vn[1], vn[2]); |
| 177 | memset(vx,0,sizeof(vx)); |
| 178 | strcpy(vx,b); |
| 179 | for(z=vx; z[0]; z++){ |
| 180 | if( z[0]=='-' ){ |
| 181 | z[0] = 0; |
| 182 | break; |
| 183 | } |
| 184 |
| --- tools/mkversion.c | |
| +++ tools/mkversion.c | |
| @@ -81,10 +81,15 @@ | |
| 81 | zOut[n] = "0123456789abcdef"[(t>>4)&0xf]; |
| 82 | zOut[n+1] = "0123456789abcdef"[t&0xf]; |
| 83 | } |
| 84 | zOut[n] = 0; |
| 85 | } |
| 86 | |
| 87 | /* Local strcpy() clone to squelch an unwarranted warning from OpenBSD. */ |
| 88 | static void local_strcpy(char *dest, const char *src){ |
| 89 | while( (*(dest++) = *(src++))!=0 ){} |
| 90 | } |
| 91 | |
| 92 | int main(int argc, char *argv[]){ |
| 93 | FILE *m,*u,*v; |
| 94 | char *z; |
| 95 | #if defined(__DMC__) /* e.g. 0x857 */ |
| @@ -173,11 +178,11 @@ | |
| 178 | z++; |
| 179 | } |
| 180 | for(z=vx; z[0]=='0'; z++){} |
| 181 | printf("#define RELEASE_VERSION_NUMBER %d%02d%02d\n", vn[0], vn[1], vn[2]); |
| 182 | memset(vx,0,sizeof(vx)); |
| 183 | local_strcpy(vx,b); |
| 184 | for(z=vx; z[0]; z++){ |
| 185 | if( z[0]=='-' ){ |
| 186 | z[0] = 0; |
| 187 | break; |
| 188 | } |
| 189 |