You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
6.5 KiB
234 lines
6.5 KiB
diff -ru dmake.orig/rulparse.c dmake/rulparse.c
|
|
--- dmake.orig/rulparse.c 2009-07-29 13:31:47.000000000 +0100
|
|
+++ dmake/rulparse.c 2009-07-29 13:32:09.000000000 +0100
|
|
@@ -897,7 +897,7 @@
|
|
/* Handle %-targets. */
|
|
CELLPTR cur;
|
|
CELLPTR tpq = NIL(CELL);
|
|
- CELLPTR nprq;
|
|
+ CELLPTR nprq = NULL;
|
|
|
|
#ifdef DBUG
|
|
DB_PRINT( "%", ("Handling %%-target [%s : : <prerequisites follow, maybe empty>]",
|
|
@@ -915,7 +915,8 @@
|
|
|
|
if( *name == '\'' && name[len-1]=='\'' ){
|
|
name[len-1] = '\0';
|
|
- strcpy(name,name+1);
|
|
+ len = strlen(name+1)+1;
|
|
+ memmove(name,name+1,len);
|
|
/* add indirect prerequisite */
|
|
_add_indirect_prereq( cur );
|
|
}
|
|
diff -ru dmake.orig/dag.c dmake/dag.c
|
|
--- dmake.orig/dag.c 2009-08-07 20:18:31.000000000 +0100
|
|
+++ dmake/dag.c 2009-08-07 20:30:59.000000000 +0100
|
|
@@ -369,14 +369,17 @@
|
|
/* strip out any \<nl> combinations where \ is the current
|
|
* CONTINUATION char */
|
|
for(p=q; (p=strchr(p,CONTINUATION_CHAR))!=NIL(char); )
|
|
- if( p[1] == '\n' )
|
|
- strcpy( p, p+2 );
|
|
+ if( p[1] == '\n' ) {
|
|
+ size_t len = strlen(p+2)+1;
|
|
+ memmove ( p, p+2, len );
|
|
+ }
|
|
else
|
|
p++;
|
|
|
|
p = DmStrSpn(q ," \t"); /* Strip white space before ... */
|
|
if( p != q ) {
|
|
- strcpy( q, p);
|
|
+ size_t len = strlen(p)+1;
|
|
+ memmove( q, p, len );
|
|
p = q;
|
|
}
|
|
|
|
diff -ru dmake.orig/expand.c dmake/expand.c
|
|
--- dmake.orig/expand.c 2009-08-07 20:18:34.000000000 +0100
|
|
+++ dmake/expand.c 2009-08-07 20:42:40.000000000 +0100
|
|
@@ -230,6 +230,7 @@
|
|
char *tok;
|
|
{
|
|
if( strchr( "\"\\vantbrf01234567", tok[1] ) ) {
|
|
+ size_t len;
|
|
switch( tok[1] ) {
|
|
case 'a' : *tok = 0x07; break;
|
|
case 'b' : *tok = '\b'; break;
|
|
@@ -246,13 +247,15 @@
|
|
register int j = 0;
|
|
for( ; i<2 && isdigit(tok[2]); i++ ) {
|
|
j = (j << 3) + (tok[1] - '0');
|
|
- strcpy( tok+1, tok+2 );
|
|
+ len = strlen(tok+2)+1;
|
|
+ memmove( tok+1, tok+2, len );
|
|
}
|
|
j = (j << 3) + (tok[1] - '0');
|
|
*tok = j;
|
|
}
|
|
}
|
|
- strcpy( tok+1, tok+2 );
|
|
+ len = strlen(tok+2)+1;
|
|
+ memmove( tok+1, tok+2, len );
|
|
}
|
|
}
|
|
|
|
@@ -365,7 +368,8 @@
|
|
if( (e = Basename(s)) != s) {
|
|
if( !(mod & DIRECTORY_FLAG) ) {
|
|
/* Move the basename to the start. */
|
|
- strcpy(s, e);
|
|
+ size_t len = strlen(e)+1;
|
|
+ memmove(s, e, len);
|
|
}
|
|
else
|
|
s = e;
|
|
@@ -382,7 +386,8 @@
|
|
|
|
if( !(mod & FILE_FLAG) ) {
|
|
/* Move the suffix to the start. */
|
|
- strcpy( s, e );
|
|
+ size_t len = strlen(e)+1;
|
|
+ memmove(s, e, len);
|
|
}
|
|
else
|
|
s = e;
|
|
@@ -725,8 +730,10 @@
|
|
done = !lev;
|
|
break;
|
|
} else {
|
|
+ size_t len;
|
|
s[1] = ' ';
|
|
- strcpy( s, s+1 );
|
|
+ len = strlen(s+1)+1;
|
|
+ memmove( s, s+1, len );
|
|
}
|
|
/*FALLTHRU*/
|
|
case ' ':
|
|
@@ -835,8 +842,10 @@
|
|
* converted them to a real space. Let's verify this. */
|
|
for( p=s; *p && *p != edelim && *p; p++ ) {
|
|
if( p[0] == '\\' && p[1] == '\n' ) {
|
|
+ size_t len;
|
|
p[1] = ' ';
|
|
- strcpy( p, p+1 );
|
|
+ len = strlen(p+1)+1;
|
|
+ memmove( p, p+1, len );
|
|
}
|
|
}
|
|
if( !*p )
|
|
@@ -1120,7 +1129,10 @@
|
|
*flag = 1;
|
|
res = Expand( start );
|
|
|
|
- if( (t = DmStrSpn( res, " \t" )) != res ) strcpy( res, t );
|
|
+ if( (t = DmStrSpn( res, " \t" )) != res ) {
|
|
+ size_t len = strlen(t)+1;
|
|
+ memmove( res, t, len );
|
|
+ }
|
|
}
|
|
|
|
FREE( start ); /* this is ok! start is assigned a DmSubStr above */
|
|
diff -ru dmake.orig/getinp.c dmake/getinp.c
|
|
--- dmake.orig/getinp.c 2009-08-07 20:18:31.000000000 +0100
|
|
+++ dmake/getinp.c 2009-08-07 20:27:08.000000000 +0100
|
|
@@ -169,7 +169,8 @@
|
|
* text lines on input. The maximum size of this is governened by
|
|
* Buffer_size */
|
|
if( q != p && q[-1] == CONTINUATION_CHAR ) {
|
|
- strcpy( q, q+1 );
|
|
+ size_t len = strlen(q+1)+1;
|
|
+ memmove( q, q+1, len );
|
|
q--;
|
|
cont = FALSE;
|
|
}
|
|
@@ -290,7 +291,8 @@
|
|
while( (c = strchr(c, COMMENT_CHAR)) != NIL(char) ) {
|
|
if( Comment || State == NORMAL_SCAN )
|
|
if( c != str && c[-1] == ESCAPE_CHAR ) {
|
|
- strcpy( c-1, c ); /* copy it left, due to \# */
|
|
+ size_t len = strlen(c)+1;
|
|
+ memmove( c-1, c, len ); /* copy it left, due to \# */
|
|
if( pend ) (*pend)--; /* shift tail pointer left */
|
|
}
|
|
else {
|
|
diff -ru dmake.orig/path.c dmake/path.c
|
|
--- dmake.orig/path.c 2009-08-07 20:18:31.000000000 +0100
|
|
+++ dmake/path.c 2009-08-07 20:41:30.000000000 +0100
|
|
@@ -172,6 +172,7 @@
|
|
char *tpath;
|
|
int hasdriveletter = 0;
|
|
int delentry;
|
|
+ size_t len;
|
|
|
|
DB_ENTER( "Clean_path" );
|
|
|
|
@@ -231,14 +232,16 @@
|
|
p++;
|
|
}
|
|
while( *p == *DirSepStr);
|
|
- strcpy(t+1,p);
|
|
+ len = strlen(p)+1;
|
|
+ memmove(t+1,p,len);
|
|
continue;
|
|
}
|
|
|
|
/* Remove './'. If OOODMAKEMODE is set do this only if it is not at
|
|
* the start of the path. */
|
|
if ( p-q == 1 && *q == '.' && (q != path || !STOBOOL(OOoDmMode)) ) {
|
|
- strcpy(q,p+1);
|
|
+ len = strlen(p+1)+1;
|
|
+ memmove(q,p+1,len);
|
|
q = tpath;
|
|
continue;
|
|
}
|
|
@@ -268,7 +271,8 @@
|
|
}
|
|
while( *t == *DirSepStr);
|
|
/* q points to first letter of the current directory/file. */
|
|
- strcpy(q,t);
|
|
+ len = strlen(t)+1;
|
|
+ memmove(q,t,len);
|
|
q = tpath;
|
|
}
|
|
else
|
|
--- dmake.orig/make.c 2009-08-08 09:56:10.000000000 +0100
|
|
+++ dmake/make.c 2009-08-08 10:00:04.000000000 +0100
|
|
@@ -1352,8 +1352,10 @@
|
|
* Nothing in Expand() should be able to change dynamic macros. */
|
|
cmnd = Expand( rp->st_string );
|
|
|
|
- if( new_attr && (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd )
|
|
- strcpy(cmnd,p);
|
|
+ if( new_attr && (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) {
|
|
+ size_t len = strlen(p)+1;
|
|
+ memmove(cmnd,p,len);
|
|
+ }
|
|
|
|
/* COMMAND macro is set to "$(CMNDNAME) $(CMNDARGS)" by default, it is
|
|
* possible for the user to reset it to, for example
|
|
@@ -1381,8 +1383,10 @@
|
|
shell = ((l_attr & A_SHELL) != 0);
|
|
|
|
/* clean up the attributes that we may have just added. */
|
|
- if( (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd )
|
|
- strcpy(cmnd,p);
|
|
+ if( (p = DmStrSpn(cmnd," \t\n+-@%")) != cmnd ) {
|
|
+ size_t len = strlen(p)+1;
|
|
+ memmove(cmnd,p,len);
|
|
+ }
|
|
}
|
|
|
|
#if defined(MSDOS)
|
|
@@ -1477,8 +1481,9 @@
|
|
for( p=cmnd; *(n = DmStrPbrk(p,tmp)) != '\0'; )
|
|
/* Remove the \<nl> sequences. */
|
|
if(*n == CONTINUATION_CHAR && n[1] == '\n') {
|
|
+ size_t len = strlen(n+2)+1;
|
|
DB_PRINT( "make", ("fixing [%s]", p) );
|
|
- strcpy( n, n+2 );
|
|
+ memmove( n, n+2, len );
|
|
p = n;
|
|
}
|
|
/* Look for an escape sequence and replace it by it's corresponding
|