Looks OK to me.
On Tue, Sep 1, 2015 at 3:10 PM, Martin Galvan <martin.gal...@tallertechnologies.com> wrote: > This patch fixes the following CppCheck errors found throughout the code: > > [c/src/lib/libbsp/shared/umon/umon.h:21]: (error) Invalid number of character > ({) when these macros are defined: '__cplusplus'. > [cpukit/libmisc/dumpbuf/dumpbuf.c:69]: (error) Undefined behavior: Variable > 'line_buffer' is used as parameter and destination in s[n]printf(). > [cpukit/libmisc/dumpbuf/dumpbuf.c:76]: (error) Undefined behavior: Variable > 'line_buffer' is used as parameter and destination in s[n]printf(). > [cpukit/libnetworking/rtems/rtems_dhcp.c:401]: (error) Common realloc > mistake: 'dhcp_hostname' nulled but not freed upon failure > [cpukit/posix/include/rtems/posix/ptimer.h:33]: (error) Invalid number of > character ({) when these macros are defined: '__cplusplus'. > [cpukit/rtems/include/rtems/rtems/dpmemimpl.h:104]: (error) Invalid number of > character ({) when these macros are defined: '__cplusplus'. > [tools/cpu/nios2/memory.c:99]: (error) Uninitialized variable: memory > [tools/cpu/nios2/ptf.c:582]: (error) Memory leak: new_prefix > > Closes #2405. > > --- > c/src/lib/libbsp/shared/umon/umon.h | 4 +++ > cpukit/libmisc/dumpbuf/dumpbuf.c | 41 > ++++++++++++++++------------ > cpukit/libnetworking/rtems/rtems_dhcp.c | 18 ++++++++---- > cpukit/posix/include/rtems/posix/ptimer.h | 5 +++- > cpukit/rtems/include/rtems/rtems/dpmemimpl.h | 6 +++- > tools/cpu/nios2/memory.c | 5 ++-- > tools/cpu/nios2/ptf.c | 24 +++++++++------- > 7 files changed, 65 insertions(+), 38 deletions(-) > > diff --git a/c/src/lib/libbsp/shared/umon/umon.h > b/c/src/lib/libbsp/shared/umon/umon.h > index 3c5bdf9..d25a781 100644 > --- a/c/src/lib/libbsp/shared/umon/umon.h > +++ b/c/src/lib/libbsp/shared/umon/umon.h > @@ -61,4 +61,8 @@ int rtems_initialize_tfs_filesystem( > */ > int umoncons_poll_read(int minor); > > +#ifdef __cplusplus > +} > #endif > + > +#endif /* __rtems_umon_h */ > diff --git a/cpukit/libmisc/dumpbuf/dumpbuf.c > b/cpukit/libmisc/dumpbuf/dumpbuf.c > index 9d34d42..aca32f3 100644 > --- a/cpukit/libmisc/dumpbuf/dumpbuf.c > +++ b/cpukit/libmisc/dumpbuf/dumpbuf.c > @@ -6,7 +6,7 @@ > */ > > /* > - * COPYRIGHT (c) 1997-2007. > + * COPYRIGHT (c) 1997-2015. > * On-Line Applications Research Corporation (OAR). > * > * The license and distribution terms for this file may in > @@ -24,6 +24,9 @@ > #include <rtems/dumpbuf.h> > #include <rtems/bspIo.h> > > +#define BUFFER_LENGTH 120 > +#define PADDING_LENGTH 16 > + > /* > * Put the body below rtems_print_buffer so it won't get inlined. > */ > @@ -59,27 +62,29 @@ static inline void Dump_Line( > int length > ) > { > + unsigned int i; > + static unsigned char line_buffer[BUFFER_LENGTH]; > + static unsigned char tmp[BUFFER_LENGTH] = ""; > > - int i; > - char line_buffer[120]; > - > - line_buffer[0] = '\0'; > - > - for( i=0 ; i<length ; i++ ) > - sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] ); > + for ( i = 0; i < length; ++i ) { > + sprintf(tmp, "%02x ", buffer[i]); > + strncat(line_buffer, tmp, strlen(tmp)); > + } > > - for( ; i<16 ; i++ ) > - strcat( line_buffer, " " ); > + for ( ; i < PADDING_LENGTH; ++i ) { > + strcat(line_buffer, " "); > + } > > - strcat( line_buffer, "|" ); > - for( i=0 ; i<length ; i++ ) > - sprintf( line_buffer, "%s%c", line_buffer, > - isprint( buffer[ i ] ) ? buffer[ i ] : '.' ); > + strcat(line_buffer, "|"); > > - for( ; i<16 ; i++ ) > - strcat( line_buffer, " " ); > + for ( i = 0; i < length; ++i ) { > + sprintf(tmp, "%c", isprint(buffer[i]) ? buffer[i] : '.'); > + strncat(line_buffer, tmp, strlen(tmp)); > + } > > - strcat( line_buffer, "|\n" ); > + for ( ; i < PADDING_LENGTH; ++i ) { > + strcat(line_buffer, " "); > + } > > - printk( line_buffer ); > + printk("%s|\n", line_buffer); > } > diff --git a/cpukit/libnetworking/rtems/rtems_dhcp.c > b/cpukit/libnetworking/rtems/rtems_dhcp.c > index c938ee0..87be238 100644 > --- a/cpukit/libnetworking/rtems/rtems_dhcp.c > +++ b/cpukit/libnetworking/rtems/rtems_dhcp.c > @@ -394,15 +394,23 @@ process_options (unsigned char *optbuf, int optbufSize) > printf ("dhcpc: hostname >= %d bytes\n", MAXHOSTNAMELEN); > len = MAXHOSTNAMELEN-1; > } > - if (sethostname (p, len) < 0) > + if (sethostname (p, len) < 0) { > printf ("dhcpc: can't set host name"); > + } > if (dhcp_hostname != NULL) > { > - dhcp_hostname = realloc (dhcp_hostname, len); > - strncpy (dhcp_hostname, p, len); > - } > - else > + char *tmp = realloc (dhcp_hostname, len); > + if (tmp != NULL) { > + dhcp_hostname = tmp; > + strncpy (dhcp_hostname, p, len); > + } else { /* realloc failed */ > + printf ("dhcpc: realloc failed (%s:%d)", __FILE__, __LINE__); > + free (dhcp_hostname); > + dhcp_hostname = NULL; > + } > + } else { /* dhcp_hostname == NULL */ > dhcp_hostname = strndup (p, len); > + } > break; > > case 7: > diff --git a/cpukit/posix/include/rtems/posix/ptimer.h > b/cpukit/posix/include/rtems/posix/ptimer.h > index 7cc0516..16ac2b8 100644 > --- a/cpukit/posix/include/rtems/posix/ptimer.h > +++ b/cpukit/posix/include/rtems/posix/ptimer.h > @@ -87,6 +87,9 @@ int timer_getoverrun( > timer_t timerid > ); > > +#ifdef __cplusplus > +} > +#endif > /** @} */ > > -#endif > +#endif /* _RTEMS_POSIX_PTIMER_H */ > diff --git a/cpukit/rtems/include/rtems/rtems/dpmemimpl.h > b/cpukit/rtems/include/rtems/rtems/dpmemimpl.h > index 9fd2e6c..d2d7a4f 100644 > --- a/cpukit/rtems/include/rtems/rtems/dpmemimpl.h > +++ b/cpukit/rtems/include/rtems/rtems/dpmemimpl.h > @@ -20,6 +20,10 @@ > #include <rtems/rtems/dpmem.h> > #include <rtems/score/objectimpl.h> > > +#ifdef __cplusplus > +extern "C" { > +#endif > + > /** > * @defgroup ClassicDPMEMImpl Dual Ported Memory Manager Implementation > * > @@ -104,5 +108,5 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control > *_Dual_ported_memory_Get ( > } > #endif > > -#endif > +#endif /* _RTEMS_RTEMS_DPMEM_INL */ > /* end of include file */ > diff --git a/tools/cpu/nios2/memory.c b/tools/cpu/nios2/memory.c > index cd88b8b..cb1ea7f 100644 > --- a/tools/cpu/nios2/memory.c > +++ b/tools/cpu/nios2/memory.c > @@ -18,7 +18,8 @@ memory_desc *find_memory(device_desc *devices) > { > struct ptf *p; > struct ptf_item pi; > - memory_desc *tmd, *memory; > + memory_desc *tmd; > + memory_desc *memory = NULL; > > /********************************************************/ > /* Check which of the devices are memory, sort by size */ > @@ -29,8 +30,6 @@ memory_desc *find_memory(device_desc *devices) > struct ptf_item pi; > device_desc *dd; > > - memory = NULL; > - > for(dd = devices; dd; dd=dd->next) > { > p = ptf_find(dd->ptf->sub, &pi, item, "Is_Memory_Device", "1"); > diff --git a/tools/cpu/nios2/ptf.c b/tools/cpu/nios2/ptf.c > index 7a31c11..07d6183 100644 > --- a/tools/cpu/nios2/ptf.c > +++ b/tools/cpu/nios2/ptf.c > @@ -567,17 +567,21 @@ void ptf_printf(FILE *s, struct ptf *tree, char *prefix) > new_prefix_len += strlen(leaf->value) + 1; > }; > new_prefix = (char *)malloc(new_prefix_len); > - strcpy(new_prefix, prefix); > - strcat(new_prefix, leaf->name); > - if(leaf->value != NULL && leaf->value[0] != 0) > + if (new_prefix != NULL) > { > - strcat(new_prefix, ":"); > - strcat(new_prefix, leaf->value); > - }; > - strcat(new_prefix, "/"); > - fputs(new_prefix, s); > - fputs("\n", s); > - ptf_printf(s, leaf->sub, new_prefix); > + strcpy(new_prefix, prefix); > + strcat(new_prefix, leaf->name); > + if(leaf->value != NULL && leaf->value[0] != 0) > + { > + strcat(new_prefix, ":"); > + strcat(new_prefix, leaf->value); > + }; > + strcat(new_prefix, "/"); > + fputs(new_prefix, s); > + fputs("\n", s); > + ptf_printf(s, leaf->sub, new_prefix); > + free(new_prefix); > + } > break; > }; > > -- > 2.5.1 > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel