From owner-svn-src-all@freebsd.org Fri Dec 18 22:44:39 2015 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 47AC8A4B193 for ; Fri, 18 Dec 2015 22:44:39 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1.freebsd.org (Postfix) with SMTP id 286A41E15 for ; Fri, 18 Dec 2015 22:44:38 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: (qmail 808 invoked by uid 99); 18 Dec 2015 22:44:37 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Dec 2015 22:44:37 +0000 Received: from [192.168.0.103] (unknown [181.55.232.163]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 0076A1A05B0; Fri, 18 Dec 2015 22:44:34 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\)) Subject: Re: svn commit: r292454 - head/bin/ed From: Pedro Giffuni In-Reply-To: <44E9BE06-1883-4AF8-816D-D699CF733EEB@bsdimp.com> Date: Fri, 18 Dec 2015 17:44:31 -0500 Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <201512182158.tBILwhRB040583@repo.freebsd.org> <44E9BE06-1883-4AF8-816D-D699CF733EEB@bsdimp.com> To: Warner Losh X-Mailer: Apple Mail (2.2104) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Dec 2015 22:44:39 -0000 Hi Warner; > Il giorno 18/dic/2015, alle ore 17:01, Warner Losh ha = scritto: >=20 > Isn=E2=80=99t strlcpy() the more appropriate interface? strncpy = doesn=E2=80=99t guarantee NUL termination. >=20 Maybe, but we were using strcpy() which doesn=E2=80=99t guarantee NULL = termination either and things have been working. I also thought that portability may be = specially important for the stuff in bin/. Pedro. > Warner >=20 >> On Dec 18, 2015, at 2:58 PM, Pedro F. Giffuni = wrote: >>=20 >> Author: pfg >> Date: Fri Dec 18 21:58:42 2015 >> New Revision: 292454 >> URL: https://svnweb.freebsd.org/changeset/base/292454 >>=20 >> Log: >> ed(1): Prevent possible string overflows >>=20 >> CID: 1007252 >> MFC after: 2 weeks >>=20 >> Modified: >> head/bin/ed/main.c >>=20 >> Modified: head/bin/ed/main.c >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- head/bin/ed/main.c Fri Dec 18 21:34:28 2015 = (r292453) >> +++ head/bin/ed/main.c Fri Dec 18 21:58:42 2015 = (r292454) >> @@ -505,7 +505,8 @@ exec_command(void) >> return ERR; >> else if (open_sbuf() < 0) >> return FATAL; >> - if (*fnp && *fnp !=3D '!') strcpy(old_filename, fnp); >> + if (*fnp && *fnp !=3D '!') >> + strncpy(old_filename, fnp, PATH_MAX); >> #ifdef BACKWARDS >> if (*fnp =3D=3D '\0' && *old_filename =3D=3D '\0') { >> errmsg =3D "no current filename"; >> @@ -532,7 +533,8 @@ exec_command(void) >> return ERR; >> } >> GET_COMMAND_SUFFIX(); >> - if (*fnp) strcpy(old_filename, fnp); >> + if (*fnp) >> + strncpy(old_filename, fnp, PATH_MAX); >> printf("%s\n", strip_escapes(old_filename)); >> break; >> case 'g': >> @@ -663,7 +665,7 @@ exec_command(void) >> GET_COMMAND_SUFFIX(); >> if (!isglobal) clear_undo_stack(); >> if (*old_filename =3D=3D '\0' && *fnp !=3D '!') >> - strcpy(old_filename, fnp); >> + strncpy(old_filename, fnp, PATH_MAX); >> #ifdef BACKWARDS >> if (*fnp =3D=3D '\0' && *old_filename =3D=3D '\0') { >> errmsg =3D "no current filename"; >> @@ -797,7 +799,7 @@ exec_command(void) >> return ERR; >> GET_COMMAND_SUFFIX(); >> if (*old_filename =3D=3D '\0' && *fnp !=3D '!') >> - strcpy(old_filename, fnp); >> + strncpy(old_filename, fnp, PATH_MAX); >> #ifdef BACKWARDS >> if (*fnp =3D=3D '\0' && *old_filename =3D=3D '\0') { >> errmsg =3D "no current filename"; >>=20 >=20