Fix an off-by-one error in the string concatenation for the setevn
command which would write over the end of the allocated area,
resulting eventually in a crash due to corruption of the malloc
metadata.

Signed-off-by: Wolfgang Denk <w...@denx.de>
---
Posted as incremental patch here to provide quick fix to testers (also
pushed to "hashtable" branch in u-boot-testing repo. Will be squashed
into new env code patch when resubmitting.

 common/cmd_nvedit.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 976a30b..010d003 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -273,7 +273,7 @@ int _do_env_set (int flag, int argc, char * const argv[])
        /*
         * Insert / replace new value
         */
-       for (i=2,len=1; i<argc; ++i) {
+       for (i=2,len=0; i<argc; ++i) {
                len += strlen(argv[i]) + 1;
        }
        if ((value = malloc(len)) == NULL) {
@@ -285,7 +285,7 @@ int _do_env_set (int flag, int argc, char * const argv[])
 
                while ((*s++ = *v++) != '\0')
                        ;
-               *s++ = ' ';
+               *(s-1) = ' ';
        }
        if (s != value)
                *--s = '\0';
-- 
1.7.1.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to