summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-03-15 15:02:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-03-15 15:02:41 +0000
commitd252351c43e32c6a1913f38476404db4a35f61a4 (patch)
tree5a0283ff2c2b6433b6b270f722529af6524abf1a /cpukit/libmisc
parent2011-03-15 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-d252351c43e32c6a1913f38476404db4a35f61a4.tar.bz2
2011-03-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* libmisc/shell/main_setenv.c: Address Coverity issue 134 which recommends using strnXXX methods.
Diffstat (limited to 'cpukit/libmisc')
-rw-r--r--cpukit/libmisc/shell/main_setenv.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/cpukit/libmisc/shell/main_setenv.c b/cpukit/libmisc/shell/main_setenv.c
index 5b7c92920f..eb47dddaa8 100644
--- a/cpukit/libmisc/shell/main_setenv.c
+++ b/cpukit/libmisc/shell/main_setenv.c
@@ -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 @@ int rtems_shell_main_setenv(int argc, char *argv[])
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 @@ int rtems_shell_main_setenv(int argc, char *argv[])
}
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++;