change log for rtems (2011-03-15)

Joel Sherrill joel.sherrill at OARcorp.com
Tue Mar 15 15:34:09 UTC 2011


On 03/15/2011 10:27 AM, Ralf Corsepius wrote:
> On 03/15/2011 04:10 PM, rtems-vc at rtems.org wrote:
>
>> 2011-03-15	Joel Sherrill<joel.sherrill at oarcorp.com>
>>
>> 	* libmisc/shell/main_setenv.c: Address Coverity issue 134 which
>> 	recommends using strnXXX methods.
>>
>> M 1.2778  cpukit/ChangeLog
>> M    1.4  cpukit/libmisc/shell/main_setenv.c
>>
>> diff -u rtems/cpukit/ChangeLog:1.2777 rtems/cpukit/ChangeLog:1.2778
>> --- rtems/cpukit/ChangeLog:1.2777	Tue Mar 15 09:52:31 2011
>> +++ rtems/cpukit/ChangeLog	Tue Mar 15 10:02:41 2011
>> @@ -1,3 +1,8 @@
>> +2011-03-15	Joel Sherrill<joel.sherrill at oarcorp.com>
>> +
>> +	* libmisc/shell/main_setenv.c: Address Coverity issue 134 which
>> +	recommends using strnXXX methods.
>> +
>>    2011-03-15	Sebastian Huber<sebastian.huber at embedded-brains.de>
>>
>>    	* libmisc/cpuuse/cpuusagereport.c: Avoid assumptions on execution
>>
>> diff -u rtems/cpukit/libmisc/shell/main_setenv.c:1.3 rtems/cpukit/libmisc/shell/main_setenv.c:1.4
>> --- rtems/cpukit/libmisc/shell/main_setenv.c:1.3	Sat Aug 28 15:10:00 2010
>> +++ rtems/cpukit/libmisc/shell/main_setenv.c	Tue Mar 15 10:02:41 2011
>> @@ -16,6 +16,13 @@
>>    #include<rtems/shell.h>
>>    #include "internal.h"
>>
>> +/*
>> + *  Limit examining or copying more than 256 characters at a time.
>> + *  Yes, this is very arbitrary.  If there are POSIX constants, then
>> + *  they should be used.
>> + */
>> +#define MAX 156
>> +
>>    int rtems_shell_main_setenv(int argc, char *argv[])
>>    {
>>      char* env = NULL;
>> @@ -32,7 +39,7 @@
>>      env = argv[1];
>>
>>      for (arg = 2; arg<   argc; arg++)
>> -    len += strlen(argv[arg]);
>> +    len += strnlen(argv[arg], MAX);
>>
>>      len += argc - 2 - 1;
>>
>> @@ -44,8 +51,8 @@
>>      }
>>
>>      for (arg = 2, p = string; arg<   argc; arg++) {
>> -    strcpy(p, argv[arg]);
>> -    p += strlen(argv[arg]);
>> +    strncpy(p, argv[arg], MAX);
>> +    p += strnlen(argv[arg], MAX);
>>        if (arg<   (argc - 1)) {
>>          *p = ' ';
>>          p++;
>>
> argv is defined as being 0 terminated
> =>  using strnlen is wrong.
> =>  Coverity is wrong
>
> Also, by limiting the string you are
> * causing bugs
> * introducing memory bloat (a static buffer).
>
There are no static buffers and none were introduced.
There was a malloc of the buffer.


> IMO this patch is simply plain wrong and should be reverted.
>
OK... anyone else have an opinion?
> _______________________________________________
> rtems-vc mailing list
> rtems-vc at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-vc


-- 
Joel Sherrill, Ph.D.             Director of Research&  Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985





More information about the vc mailing list