Hi!

----

Compiling and testing ast-ksh.2012-05-04 against the "attributes.sh"
test under valgrind control gives me the following warning that a
conditional jump depends on an uninitialised value in sh/name.c line
1852:
-- snip --
$ CCFLAGS='-g' CC='gcc -std=gnu99 -D_AST_std_malloc=1 -DSHOPT_SYSRC
-D_map_libc=1 -g' ./bin/package make
$ (export LD_LIBRARY_PATH=$PWD/arch/linux.i386/lib
SHELL=$PWD/arch/linux.i386-64/bin/ksh ; LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8 VMALLOC_OPTIONS="abort" valgrind --track-origins=yes
--read-var-info=yes $SHELL src/cmd/ksh93/tests/attributes.sh)
==22034== Conditional jump or move depends on uninitialised value(s)
==22034==    at 0x4481CF: nv_putval (name.c:1852)
==22034==    by 0x4474FB: nv_open (name.c:1533)
==22034==    by 0x444444: nv_setlist (name.c:602)
==22034==    by 0x468124: sh_exec (xec.c:1184)
==22034==    by 0x46C6CB: sh_exec (xec.c:2420)
==22034==    by 0x46B8F6: sh_exec (xec.c:2181)
==22034==    by 0x408675: exfile (main.c:599)
==22034==    by 0x407ACB: sh_main (main.c:373)
==22034==    by 0x406E28: main (pmain.c:45)
==22034==  Uninitialised value was created by a heap allocation
==22034==    at 0x4C297CD: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22034==    by 0x504435: _ast_malloc (malloc.c:1037)
==22034==    by 0x44833E: nv_putval (name.c:1886)
==22034==    by 0x44B158: nv_newattr (name.c:3057)
==22034==    by 0x48C622: setall (typeset.c:802)
==22034==    by 0x48B1F2: b_typeset (typeset.c:457)
==22034==    by 0x468E0F: sh_exec (xec.c:1367)
==22034==    by 0x408675: exfile (main.c:599)
==22034==    by 0x407ACB: sh_main (main.c:373)
==22034==    by 0x406E28: main (pmain.c:45)
-- snip --
... this seems to happen because |*up->cp| in line 1852...
-- snip --
  1852                  if(!up->cp || *up->cp==0)
  1853                          flags &= ~NV_APPEND;
-- snip --
... uses memory allocated by |malloc()|.

Proposed fix:
-- snip --
--- ./src/cmd/ksh93/sh/name.c      2012-05-03 20:21:40.000000000 +0200
+++ ./src/cmd/ksh93/sh/name.c   2012-05-08 09:56:38.770519035 +0200
@@ -1884,6 +1884,7 @@
                                if(size==0)
                                        size = oldsize + (3*dot/4);
                                cp = (char*)malloc(size+1);
+                               cp[0]='\0';
                                nv_offattr(np,NV_NOFREE);
                                if(oldsize)
                                        memcpy((void*)cp,(void*)up->cp,oldsize);
-- snip --

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)

_______________________________________________
ast-developers mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-developers

Reply via email to