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-head
mailing list