summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-08-28 20:10:00 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-08-28 20:10:00 +0000
commit8cb97f594f0fcec84e06feafde6a3dd7dea1cb39 (patch)
tree930fbf83bcc0cf3b868f9142b3122c1b3889cb2f
parentJust comment out line. (diff)
downloadrtems-8cb97f594f0fcec84e06feafde6a3dd7dea1cb39.tar.bz2
2010-08-28 Joel Sherrill <joel.sherrill@oarcorp.com>
PR 1694/shell * libmisc/shell/main_setenv.c: Address memory leak identified by Coverity.
-rw-r--r--cpukit/ChangeLog6
-rw-r--r--cpukit/libmisc/shell/main_setenv.c31
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 <joel.sherrill@oarcorp.com>
+
+ PR 1694/shell
+ * libmisc/shell/main_setenv.c: Address memory leak identified by
+ Coverity.
+
2010-08-28 Joel Sherrill <joel.sherrilL@OARcorp.com>
* 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;
}