summaryrefslogtreecommitdiffstats
path: root/contrib/lukemftp/src/domacro.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/lukemftp/src/domacro.c')
-rw-r--r--contrib/lukemftp/src/domacro.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/contrib/lukemftp/src/domacro.c b/contrib/lukemftp/src/domacro.c
index f42011c..09109b0 100644
--- a/contrib/lukemftp/src/domacro.c
+++ b/contrib/lukemftp/src/domacro.c
@@ -1,4 +1,4 @@
-/* $NetBSD: domacro.c,v 1.17 2000/07/18 06:45:03 lukem Exp $ */
+/* $NetBSD: domacro.c,v 1.19 2002/02/01 05:04:43 itojun Exp $ */
/*
* Copyright (c) 1985, 1993, 1994
@@ -41,7 +41,7 @@ void
domacro(int argc, char *argv[])
{
int i, j, count = 2, loopflg = 0;
- char *cp1, *cp2, line2[200];
+ char *cp1, *cp2, line2[FTPBUFLEN];
struct cmd *c;
if ((argc == 0 && argv != NULL) ||
@@ -59,7 +59,7 @@ domacro(int argc, char *argv[])
code = -1;
return;
}
- (void)strcpy(line2, line);
+ (void)strlcpy(line2, line, sizeof(line2));
TOP:
cp1 = macros[i].mac_start;
while (cp1 != macros[i].mac_end) {
@@ -78,7 +78,8 @@ domacro(int argc, char *argv[])
j = 10*j + *cp1 - '0';
cp1--;
if (argc - 2 >= j) {
- (void)strcpy(cp2, argv[j+1]);
+ (void)strlcpy(cp2, argv[j+1],
+ sizeof(line) - (cp2 - line));
cp2 += strlen(argv[j+1]);
}
break;
@@ -87,7 +88,8 @@ domacro(int argc, char *argv[])
loopflg = 1;
cp1++;
if (count < argc) {
- (void)strcpy(cp2, argv[count]);
+ (void)strlcpy(cp2, argv[count],
+ sizeof(line) - (cp2 - line));
cp2 += strlen(argv[count]);
}
break;
@@ -117,10 +119,11 @@ domacro(int argc, char *argv[])
fputs(line, ttyout);
putc('\n', ttyout);
}
+ margv[0] = c->c_name;
(*c->c_handler)(margc, margv);
if (bell && c->c_bell)
(void)putc('\007', ttyout);
- (void)strcpy(line, line2);
+ (void)strlcpy(line, line2, sizeof(line));
makeargv();
argc = margc;
argv = margv;
OpenPOWER on IntegriCloud