From de55da064552b4c3024df905b117de00a54ac64d Mon Sep 17 00:00:00 2001 From: YangKeao Date: Thu, 19 Jan 2023 16:23:36 +0800 Subject: [PATCH] validate whether addr is null before constructing slice Signed-off-by: YangKeao --- src/addr_validate.rs | 4 ++++ src/collector.rs | 2 +- src/profiler.rs | 2 +- src/report.rs | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/addr_validate.rs b/src/addr_validate.rs index 9e9a34c6..4dd894e8 100644 --- a/src/addr_validate.rs +++ b/src/addr_validate.rs @@ -59,6 +59,10 @@ fn open_pipe() -> nix::Result<()> { } pub fn validate(addr: *const libc::c_void) -> bool { + if addr.is_null() { + return false; + } + const CHECK_LENGTH: usize = 2 * size_of::<*const libc::c_void>() / size_of::(); // read data in the pipe diff --git a/src/collector.rs b/src/collector.rs index 41b34139..c05fb18b 100644 --- a/src/collector.rs +++ b/src/collector.rs @@ -37,7 +37,7 @@ pub struct Bucket { impl Default for Bucket { fn default() -> Bucket { - let entries = Box::new(Default::default()); + let entries = Box::default(); Self { length: 0, entries } } diff --git a/src/profiler.rs b/src/profiler.rs index 294b8c55..ad50e4e9 100644 --- a/src/profiler.rs +++ b/src/profiler.rs @@ -358,7 +358,7 @@ extern "C" fn perf_signal_handler( write_thread_name(current_thread, &mut name); let name = unsafe { std::ffi::CStr::from_ptr(name_ptr) }; - profiler.sample(bt, name.to_bytes(), current_thread as u64, sample_timestamp); + profiler.sample(bt, name.to_bytes(), current_thread, sample_timestamp); } } } diff --git a/src/report.rs b/src/report.rs index 37b885a8..971cb8d6 100644 --- a/src/report.rs +++ b/src/report.rs @@ -229,7 +229,7 @@ mod protobuf { /// `pprof` will generate google's pprof format report. pub fn pprof(&self) -> crate::Result { let mut dedup_str = HashSet::new(); - for key in self.data.iter().map(|(key, _)| key) { + for key in self.data.keys() { dedup_str.insert(key.thread_name_or_id()); for frame in key.frames.iter() { for symbol in frame {