Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 24 Jan 2023 15:38:33 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH v2] perf buildid: Avoid copy of uninitialized memory |
| |
Em Fri, Jan 20, 2023 at 10:58:28AM -0800, Ian Rogers escreveu: > build_id__init only copies the buildid data up to size leaving the > rest of the data array uninitialized. Copying the full array during > synthesis means the written event contains uninitialized > memory. Ensure the size is less that the buffer size and only copy the > bytes that were initialized. This was detected by the Clang/LLVM > memory sanitizer. > > Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com> > Signed-off-by: Ian Rogers <irogers@google.com> > > v2. Avoids the potential for copying too much as suggested by Arnaldo.
Thanks, applied.
- Arnaldo
> --- > tools/perf/util/synthetic-events.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c > index 3ab6a92b1a6d..9ab9308ee80c 100644 > --- a/tools/perf/util/synthetic-events.c > +++ b/tools/perf/util/synthetic-events.c > @@ -2219,8 +2219,8 @@ int perf_event__synthesize_build_id(struct perf_tool *tool, struct dso *pos, u16 > > len = pos->long_name_len + 1; > len = PERF_ALIGN(len, NAME_ALIGN); > - memcpy(&ev.build_id.build_id, pos->bid.data, sizeof(pos->bid.data)); > - ev.build_id.size = pos->bid.size; > + ev.build_id.size = min(pos->bid.size, sizeof(pos->bid.data)); > + memcpy(&ev.build_id.build_id, pos->bid.data, ev.build_id.size); > ev.build_id.header.type = PERF_RECORD_HEADER_BUILD_ID; > ev.build_id.header.misc = misc | PERF_RECORD_MISC_BUILD_ID_SIZE; > ev.build_id.pid = machine->pid; > -- > 2.39.0.246.g2a6d74b583-goog >
--
- Arnaldo
| ![\](/images/icornerr.gif) |