svn commit: r292454 - head/bin/ed

Pedro Giffuni pfg at FreeBSD.org
Fri Dec 18 22:44:39 UTC 2015


Hi Warner;

> Il giorno 18/dic/2015, alle ore 17:01, Warner Losh <imp at bsdimp.com> ha scritto:
> 
> Isn’t strlcpy() the more appropriate interface? strncpy doesn’t guarantee NUL termination.
> 

Maybe, but we were using strcpy() which doesn’t 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
> 
>> On Dec 18, 2015, at 2:58 PM, Pedro F. Giffuni <pfg at FreeBSD.org> wrote:
>> 
>> Author: pfg
>> Date: Fri Dec 18 21:58:42 2015
>> New Revision: 292454
>> URL: https://svnweb.freebsd.org/changeset/base/292454
>> 
>> Log:
>> ed(1): Prevent possible string overflows
>> 
>> CID:		1007252
>> MFC after:	2 weeks
>> 
>> Modified:
>> head/bin/ed/main.c
>> 
>> Modified: head/bin/ed/main.c
>> ==============================================================================
>> --- 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 != '!') strcpy(old_filename, fnp);
>> +		if (*fnp && *fnp != '!')
>> +			 strncpy(old_filename, fnp, PATH_MAX);
>> #ifdef BACKWARDS
>> 		if (*fnp == '\0' && *old_filename == '\0') {
>> 			errmsg = "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 == '\0' && *fnp != '!')
>> -			strcpy(old_filename, fnp);
>> +			strncpy(old_filename, fnp, PATH_MAX);
>> #ifdef BACKWARDS
>> 		if (*fnp == '\0' && *old_filename == '\0') {
>> 			errmsg = "no current filename";
>> @@ -797,7 +799,7 @@ exec_command(void)
>> 			return ERR;
>> 		GET_COMMAND_SUFFIX();
>> 		if (*old_filename == '\0' && *fnp != '!')
>> -			strcpy(old_filename, fnp);
>> +			strncpy(old_filename, fnp, PATH_MAX);
>> #ifdef BACKWARDS
>> 		if (*fnp == '\0' && *old_filename == '\0') {
>> 			errmsg = "no current filename";
>> 
> 



More information about the svn-src-all mailing list