From 8cb97f594f0fcec84e06feafde6a3dd7dea1cb39 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Sat, 28 Aug 2010 20:10:00 +0000 Subject: 2010-08-28 Joel Sherrill PR 1694/shell * libmisc/shell/main_setenv.c: Address memory leak identified by Coverity. --- cpukit/ChangeLog | 6 ++++++ cpukit/libmisc/shell/main_setenv.c | 31 ++++++++++++++----------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index bed41b7680..6cfceebccc 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,9 @@ +2010-08-28 Joel Sherrill + + PR 1694/shell + * libmisc/shell/main_setenv.c: Address memory leak identified by + Coverity. + 2010-08-28 Joel Sherrill * libfs/src/pipe/pipe.c: Remove unreachable line flagged by Coverity as diff --git a/cpukit/libmisc/shell/main_setenv.c b/cpukit/libmisc/shell/main_setenv.c index a682f19394..5b7c92920f 100644 --- a/cpukit/libmisc/shell/main_setenv.c +++ b/cpukit/libmisc/shell/main_setenv.c @@ -24,44 +24,41 @@ int rtems_shell_main_setenv(int argc, char *argv[]) int arg; char* p; - if (argc <= 2) - { - printf ("error: no variable or string\n"); + if (argc <= 2) { + printf("error: no variable or string\n"); return 1; } env = argv[1]; for (arg = 2; arg < argc; arg++) - len += strlen (argv[arg]); + len += strlen(argv[arg]); len += argc - 2 - 1; - string = malloc (len + 1); + string = malloc(len + 1); - if (!string) - { - printf ("error: no memory\n"); + if (!string) { + printf("error: no memory\n"); return 1; } - for (arg = 2, p = string; arg < argc; arg++) - { - strcpy (p, argv[arg]); - p += strlen (argv[arg]); - if (arg < (argc - 1)) - { + for (arg = 2, p = string; arg < argc; arg++) { + strcpy(p, argv[arg]); + p += strlen(argv[arg]); + if (arg < (argc - 1)) { *p = ' '; p++; } } - if (setenv (env, string, 1) < 0) - { - printf ("error: %s\n", strerror (errno)); + if (setenv(env, string, 1) < 0) { + printf( "error: %s\n", strerror(errno) ); + free( string ); return 1; } + free( string ); return 0; } -- cgit v1.2.3