Date: Sat, 10 Oct 1998 08:10:40 GMT From: zach@gaffaneys.com To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/8250: buffer overflow in mail(1) Message-ID: <199810100810.IAA13069@k6n1.znh.org>
next in thread | raw e-mail | index | archive | help
>Number: 8250 >Category: bin >Synopsis: buffer overflow in mail(1) >Confidential: no >Severity: critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Oct 10 01:20:01 PDT 1998 >Last-Modified: >Originator: Zach Heilig >Organization: none >Release: FreeBSD 3.0-BETA i386 >Environment: >Description: >How-To-Repeat: 1) set TMPDIR to any string longer than 14 characters. 2) run 'mail' Thanks to Studded (Doug) for stumbling across this one :-) >Fix: Index: temp.c =================================================================== RCS file: /home/ncvs/src/usr.bin/mail/temp.c,v retrieving revision 1.3 diff -u -r1.3 temp.c --- temp.c 1997/07/24 06:56:33 1.3 +++ temp.c 1998/10/10 07:16:34 @@ -49,11 +49,11 @@ * Give names to all the temporary files that we will need. */ -char tempMail[24]; -char tempQuit[24]; -char tempEdit[24]; -char tempResid[24]; -char tempMesg[24]; +char tempMail[FILENAME_MAX]; +char tempQuit[FILENAME_MAX]; +char tempEdit[FILENAME_MAX]; +char tempResid[FILENAME_MAX]; +char tempMesg[FILENAME_MAX]; char *tmpdir; void @@ -72,6 +72,11 @@ cp[len] = '/'; cp[len + 1] = '\0'; tmpdir = cp; + } + + if ((strlen(tmpdir) + sizeof("RsXXXXXX")) > sizeof tempMail) { + printf("ERROR: Temporary filename buffers are not big enough!\n"); + exit(1); } strcpy(tempMail, tmpdir); >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810100810.IAA13069>