[Bug 231517] fts: causes error in valgrind
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 08 Jun 2022 19:17:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231517
--- Comment #1 from Paul Floyd <pjfloyd@wanadoo.fr> ---
With a debug build of libc I get
==1494== Conditional jump or move depends on uninitialised value(s)
==1494== at 0x48F29D7: fts_close (lib/libc/gen/fts.c:256)
==1494== by 0x2019B6: main (ftstest.c:17)
==1494== Uninitialised value was created by a heap allocation
==1494== at 0x484CBC4: malloc (vg_replace_malloc.c:397)
==1494== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022)
==1494== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195)
==1494== by 0x20197E: main (ftstest.c:13)
fts_open does this
struct _fts_private *priv;
if ((priv = calloc(1, sizeof(*priv))) == NULL)
return (NULL);
sp = &priv->ftsp_fts;
if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL)
where the first member of _fts_private is
FTS ftsp_fts;
meaning p[riv and sp are equivalent addresses.
And the error code is
if (sp->fts_cur) {
for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) { //
ERROR
It's what p points to that is not initialized:
gdb) p p
$5 = (FTSENT *) 0x54652d0
(gdb) p sizeof(*p)
$6 = 152
(gdb) mo check_memory defined 0x54652d0 152
Address 0x54652D0 len 152 not defined:
Uninitialised value at 0x54652D0 was created by a heap allocation
==1649== at 0x484CBC4: malloc (vg_replace_malloc.c:397)
==1649== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022)
==1649== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195)
==1649== by 0x20197E: main (ftstest.c:13)
Address 0x54652d0 is 0 bytes inside a block of size 377 alloc'd
==1649== at 0x484CBC4: malloc (vg_replace_malloc.c:397)
==1649== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022)
==1649== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195)
==1649== by 0x20197E: main (ftstest.c:13)
[using vgdb and the monitor command]
As far as I'm concerned it's a bug in fts_open.
--
You are receiving this mail because:
You are the assignee for the bug.