From owner-freebsd-current Tue Nov 23 21:49:55 1999 Delivered-To: freebsd-current@freebsd.org Received: from green.dyndns.org (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id B4A5B150BF; Tue, 23 Nov 1999 21:49:01 -0800 (PST) (envelope-from green@FreeBSD.org) Received: from localhost (green@localhost [127.0.0.1]) by green.dyndns.org (8.9.3/8.9.3) with ESMTP id AAA41074; Wed, 24 Nov 1999 00:44:12 -0500 (EST) (envelope-from green@FreeBSD.org) Date: Wed, 24 Nov 1999 00:44:11 -0500 (EST) From: Brian Fundakowski Feldman X-Sender: green@green.dyndns.org To: Kris Kennaway Cc: current@FreeBSD.org Subject: Re: Overflow in banner(1) In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I'd prefer something like this that I've attached. The move over the years has been away from artificial limits... -- Brian Fundakowski Feldman \ FreeBSD: The Power to Serve! / green@FreeBSD.org `------------------------------' Index: banner.c =================================================================== RCS file: /usr2/ncvs/src/usr.bin/banner/banner.c,v retrieving revision 1.6 diff -u -r1.6 banner.c --- banner.c 1999/04/19 04:05:25 1.6 +++ banner.c 1999/11/24 05:41:35 @@ -1018,7 +1018,7 @@ }; char line[DWIDTH]; -char message[MAXMSG]; +char *message; char print[DWIDTH]; int debug, i, j, linen, max, nchars, pc, term, trace, x, y; int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ @@ -1058,14 +1058,24 @@ /* Have now read in the data. Next get the message to be printed. */ if (*argv) { - strcpy(message, *argv); + message = strdup(*argv); + if (message == NULL) + err(1, "strdup"); while (*++argv) { - strcat(message, " "); - strcat(message, *argv); + char *omessage; + + omessage = message; + asprintf(&message, "%s %s", message, *argv); + if (message == NULL) + err(1, "asprintf"); + free(omessage); } nchars = strlen(message); } else { fprintf(stderr,"Message: "); + message = malloc(MAXMSG); + if (message == NULL) + err(1, "malloc"); (void)fgets(message, sizeof(message), stdin); nchars = strlen(message); message[nchars--] = '\0'; /* get rid of newline */ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message