diff --git a/main.c b/main.c index d6af946..2db79dc 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.23 2003/03/10 03:48:16 david Exp $ */ +/* $OpenBSD: main.c,v 1.24 2003/04/04 23:12:02 deraadt Exp $ */ /* * startup, main loop, environments and error handling @@ -829,7 +829,7 @@ remove_temps(tp) APERM); memset(t, 0, sizeof(struct temp)); t->name = (char *) &t[1]; - strcpy(t->name, tp->name); + strlcpy(t->name, tp->name, strlen(tp->name) + 1); t->next = delayed_remove; delayed_remove = t; } diff --git a/misc.c b/misc.c index d916ec4..bf01495 100644 --- a/misc.c +++ b/misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.14 2003/03/13 09:03:07 deraadt Exp $ */ +/* $OpenBSD: misc.c,v 1.15 2003/04/04 23:12:02 deraadt Exp $ */ /* * Miscellaneous functions @@ -83,7 +83,17 @@ str_save(s, ap) register const char *s; Area *ap; { - return s ? strcpy((char*) alloc((size_t)strlen(s)+1, ap), s) : NULL; + size_t len; + char *p; + + if (!s) + return NULL; + len = strlen(s)+1; + p = alloc(len, ap); + if (!p) + return NULL; + strlcpy(p, s, len+1); + return (p); } /* Allocate a string of size n+1 and copy upto n characters from the possibly