Hi Ilya, On Mon, 2023-02-06 at 23:25 +0100, Ilya Leoshkevich via Elfutils-devel wrote: > MSan complains: > > Uninitialized value was created by an allocation of 'reglocs' in the > stack frame > #0 0x562d35c686f0 in handle_core_note elfutils/src/readelf.c:12674:3 > #const Ebl_Register_Location *reglocs; > ==1006199==WARNING: MemorySanitizer: use-of-uninitialized-value > #0 0x562d35c68a2a in handle_core_note elfutils/src/readelf.c:12692:11 > #colno = handle_core_registers (ebl, ebl->elf, desc + regs_offset, > # reglocs, nregloc); > > Strictly speaking, this is not a problem, because nregloc == 0, but for > other note types we initialize it anyway, so do it here as well.
Yeah, this is something valgrind wouldn't complain about since it doesn't see passing of an undefined value as "use". But I think msan is technically correct that passing an indeterminate value to a function provokes undefined behavior. Also it is of course more consistent with the rest of the code which does initialize reglocs even when nregloc is zero. Pushed as is. Thanks, Mark > Signed-off-by: Ilya Leoshkevich <i...@linux.ibm.com> > --- > backends/linux-core-note.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c > index 9faae4c3..238ec16d 100644 > --- a/backends/linux-core-note.c > +++ b/backends/linux-core-note.c > @@ -239,6 +239,7 @@ EBLHOOK(core_note) (const GElf_Nhdr *nhdr, const char > *name, > return 0; > *regs_offset = 0; > *nregloc = 0; > + *reglocs = NULL; > *nitems = 1; > *items = vmcoreinfo_items; > return 1;