Date: Mon, 20 Mar 2000 02:12:42 -0500 (EST) From: Mike Heffner <mheffner@mailandnews.com> To: FreeBSD-audit <FreeBSD-audit@freebsd.org> Subject: three small patches - oflows Message-ID: <XFMail.20000320021242.mheffner@mailandnews.com>
next in thread | raw e-mail | index | archive | help
Hi, Here are three small patches that fix misc. overflows. Could someone take a quick look at them, and possibly commit :) - ed patch, fixes "ed [4096]" overflow Index: bin/ed/main.c =================================================================== RCS file: /home/ncvs/src/bin/ed/main.c,v retrieving revision 1.14 diff -u -r1.14 main.c --- main.c 1999/08/27 23:14:14 1.14 +++ main.c 2000/03/20 07:08:33 @@ -175,7 +175,9 @@ if (read_file(*argv, 0) < 0 && !isatty(0)) quit(2); else if (**argv != '!') - strcpy(old_filename, *argv); + if(strlcpy(old_filename, *argv, + sizeof(old_filename))>=sizeof(old_filename)) + quit(2); } else if (argc) { fputs("?\n", stderr); if (**argv == '\0') @@ -1346,7 +1348,7 @@ REALLOC(file, filesz, MAXPATHLEN + 1, NULL); /* assert: no trailing escape */ - while ((file[i++] = (*s == '\\') ? *++s : *s)) + while (i < filesz-1 && (file[i++] = (*s == '\\') ? *++s : *s)) s++; return file; } - natd patch, fixes "natd -w [17000] blah" overflow Index: sbin/natd/natd.c =================================================================== RCS file: /home/ncvs/src/sbin/natd/natd.c,v retrieving revision 1.25 diff -u -r1.25 natd.c --- natd.c 2000/02/25 11:34:38 1.25 +++ natd.c 2000/03/04 03:42:07 @@ -421,9 +421,9 @@ static void ParseArgs (int argc, char** argv) { int arg; - char* parm; char* opt; char parmBuf[256]; + int len; /* bounds checking */ for (arg = 1; arg < argc; arg++) { @@ -434,23 +434,25 @@ Usage (); } - parm = NULL; parmBuf[0] = '\0'; + len = 0; while (arg < argc - 1) { if (argv[arg + 1][0] == '-') break; - if (parm) - strcat (parmBuf, " "); + if (len){ + strncat (parmBuf, " ", sizeof(parmBuf)-len-1); + len += strlen(parmBuf+len); + } ++arg; - parm = parmBuf; - strcat (parmBuf, argv[arg]); + strncat (parmBuf, argv[arg], sizeof(parmBuf)-len-1); + len += strlen(parmBuf+len); } - ParseOption (opt + 1, parm, 1); + ParseOption (opt + 1, (len ? parmBuf : NULL), 1); } } - startslip patch, fixes "startslip -d [8192] -c [8192]" overflow Index: sbin/startslip/startslip.c =================================================================== RCS file: /home/ncvs/src/sbin/startslip/startslip.c,v retrieving revision 1.31 diff -u -r1.31 startslip.c --- startslip.c 1999/08/28 00:14:27 1.31 +++ startslip.c 2000/03/20 06:57:33 @@ -214,7 +214,9 @@ dvname = devicename; else dvname++; - sprintf(pidfile, PIDFILE, _PATH_VARRUN, dvname); + if(snprintf(pidfile, sizeof(pidfile), PIDFILE, _PATH_VARRUN, dvname) >= + sizeof(pidfile) ) + usage(); if ((pfd = fopen(pidfile, "r")) != NULL) { if (fscanf(pfd, "%ld\n", &lpid) == 1) { pid = lpid; Thanks, /**************************************** * Mike Heffner <spock@techfour.net> * * Fredericksburg, VA -- ICQ# 882073 * * Sent at: 20-Mar-2000 -- 01:59:00 EST * * http://my.ispchannel.com/~mheffner * ****************************************/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20000320021242.mheffner>