openbsd-ports/print/mpage/patches/patch-argsc
1999-12-14 06:42:22 +00:00

57 lines
2.5 KiB
Plaintext

--- args.c.orig Wed Nov 26 10:14:22 1997
+++ args.c Mon Dec 13 19:32:26 1999
@@ -45,6 +45,7 @@
int consumed;
int currarg;
int opterrors;
+ size_t len;
#define OPTARG() \
{ consumed = 1; if(*++optstr == '\0') optstr = argv[++currarg]; }
@@ -146,18 +147,17 @@
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;
}
}
@@ -341,10 +341,10 @@
case 'P': /* Printer */
consumed = 1;
doprint = 1;
- if (*++optstr)
+ if (*++optstr) {
if (!strcmp(optstr, "-"))
doprint = 0; /* kill MPAGE envvar que setting*/
- else {
+ } else {
printque = optstr;
}
break;
@@ -429,7 +429,7 @@
libdir = env;
if ((env = getenv("MPAGE")) != NULL) {
- strcpy(copy, env);
+ (void)strlcpy(copy, env, sizeof(copy));
argv = slice(copy, &argc);
if (do_args(argc, argv, 1) < 0) {
fprintf(stderr, "%s: error in environment \"%s\"\n", MPAGE, env);