$OpenBSD: patch-args_c,v 1.2 2002/08/02 11:32:54 naddy Exp $
--- args.c.orig	Wed Nov 14 22:05:10 2001
+++ args.c	Fri Aug  2 13:23:06 2002
@@ -35,6 +35,7 @@ do_args(int argc, char **argv, int envfl
     int consumed;
     int currarg;
     int opterrors;
+    size_t len;
 
     int i;
 
@@ -142,18 +143,17 @@ do_args(int argc, char **argv, int envfl
                         break;
                 case 'C':    /* select character definitions */
                         consumed = 1;
+                        len = (strlen(libdir) + strlen(optstr) + 2);
                         if (*++optstr) { /* did we get a encoding name ? */
-                            if ((charvec_file = (char *) malloc(strlen(libdir) +
-                                                                strlen(optstr) +
-                                                                2)) == NULL) {
+                            if ((charvec_file = (char *) malloc(len)) == NULL) {
                                 perror(optstr);
                                 fprintf(stderr,
                                     "ignoring character encoding definition\n");
                             }
                             else {
-                                (void) strcpy(charvec_file, libdir);
-                                (void) strcat(charvec_file, "/");
-                                (void) strcat(charvec_file, optstr);
+                                (void) strlcpy(charvec_file, libdir, len);
+                                (void) strlcat(charvec_file, "/", len);
+                                (void) strlcat(charvec_file, optstr, len);
                                 opt_encoding = 1;
                             }
                         }
@@ -442,7 +442,6 @@ do_env()
         libdir = env;
 
     if ((env = getenv("MPAGE")) != NULL) {
-        strcpy(copy, env);
         if ((copy = strdup(env)) == NULL) {
             fprintf(stderr, "%s: Unable to alloc memory for environment args\n",
                     MPAGE);
