Skip to content

Commit e6f8387

Browse files
committed
fix(libdd-crashtracker): avoid leaking Endpoint through the public API
1 parent 3f3efef commit e6f8387

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

libdd-crashtracker-ffi/src/collector/datatypes.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright 2024-Present Datadog, Inc. https://www.datadoghq.com/
22
// SPDX-License-Identifier: Apache-2.0
33

4-
use libdd_common::Endpoint;
54
use libdd_common_ffi::slice::{AsBytes, CharSlice};
65
use libdd_common_ffi::{Error, Slice};
76
pub use libdd_crashtracker::{OpTypes, StacktraceCollection};
@@ -61,7 +60,7 @@ pub struct Config<'a> {
6160
pub demangle_names: bool,
6261
/// The endpoint to send the crash report to (can be a file://).
6362
/// If None, the crashtracker will infer the agent host from env variables.
64-
pub endpoint: Option<&'a Endpoint>,
63+
pub endpoint: CharSlice<'a>,
6564
/// Optional filename for a unix domain socket if the receiver is used asynchonously
6665
pub optional_unix_socket_filename: CharSlice<'a>,
6766
pub resolve_frames: StacktraceCollection,
@@ -90,7 +89,7 @@ impl<'a> TryFrom<Config<'a>> for libdd_crashtracker::CrashtrackerConfiguration {
9089
};
9190
let create_alt_stack = value.create_alt_stack;
9291
let use_alt_stack = value.use_alt_stack;
93-
let endpoint = value.endpoint.cloned();
92+
let endpoint = value.endpoint.try_to_string_option().unwrap_or(None);
9493
let resolve_frames = value.resolve_frames;
9594
let signals = value.signals.iter().copied().collect();
9695
let timeout = if value.timeout_ms == 0 {
@@ -104,7 +103,7 @@ impl<'a> TryFrom<Config<'a>> for libdd_crashtracker::CrashtrackerConfiguration {
104103
additional_files,
105104
create_alt_stack,
106105
use_alt_stack,
107-
endpoint,
106+
endpoint.as_deref(),
108107
resolve_frames,
109108
signals,
110109
timeout,

libdd-crashtracker/src/collector/api.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ mod tests {
118118
use crate::{begin_op, insert_span, insert_trace, StacktraceCollection};
119119
use chrono::Utc;
120120
use libdd_common::tag;
121-
use libdd_common::Endpoint;
122121
use std::time::Duration;
123122
// We can't run this in the main test runner because it (deliberately) crashes,
124123
// and would make all following tests unrunable.
@@ -133,7 +132,7 @@ mod tests {
133132
let dir = "/tmp/crashreports/";
134133
let output_url = format!("file://{dir}{time}.txt");
135134

136-
let endpoint = Some(Endpoint::from_slice(&output_url));
135+
let endpoint = Some(output_url.as_str());
137136

138137
let path_to_receiver_binary =
139138
"/tmp/libdatadog/bin/libdatadog-crashtracking-receiver".to_string();
@@ -198,7 +197,7 @@ mod tests {
198197
let dir = "/tmp/crashreports/";
199198
let output_url = format!("file://{dir}{time}.txt");
200199

201-
let endpoint = Some(Endpoint::from_slice(&output_url));
200+
let endpoint = Some(output_url.as_str());
202201

203202
let create_alt_stack = true;
204203
let use_alt_stack = false;
@@ -254,7 +253,7 @@ mod tests {
254253
let dir = "/tmp/crashreports/";
255254
let output_url = format!("file://{dir}{time}.txt");
256255

257-
let endpoint = Some(Endpoint::from_slice(&output_url));
256+
let endpoint = Some(output_url.as_str());
258257

259258
let path_to_receiver_binary =
260259
"/tmp/libdatadog/bin/libdatadog-crashtracking-receiver".to_string();
@@ -376,7 +375,7 @@ mod tests {
376375
let dir = "/tmp/crashreports/";
377376
let output_url = format!("file://{dir}{time}.txt");
378377

379-
let endpoint = Some(Endpoint::from_slice(&output_url));
378+
let endpoint = Some(output_url.as_str());
380379

381380
let path_to_receiver_binary =
382381
"/tmp/libdatadog/bin/libdatadog-crashtracking-receiver".to_string();
@@ -504,7 +503,7 @@ mod tests {
504503
let dir = "/tmp/crashreports/";
505504
let output_url = format!("file://{dir}{time}.txt");
506505

507-
let endpoint = Some(Endpoint::from_slice(&output_url));
506+
let endpoint = Some(output_url.as_str());
508507

509508
let path_to_receiver_binary =
510509
"/tmp/libdatadog/bin/libdatadog-crashtracking-receiver".to_string();
@@ -667,7 +666,7 @@ mod tests {
667666
let dir = "/tmp/crashreports/";
668667
let output_url = format!("file://{dir}{time}.txt");
669668

670-
let endpoint = Some(Endpoint::from_slice(&output_url));
669+
let endpoint = Some(output_url.as_str());
671670

672671
let path_to_receiver_binary =
673672
"/tmp/libdatadog/bin/libdatadog-crashtracking-receiver".to_string();

libdd-crashtracker/src/shared/configuration.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ impl CrashtrackerConfiguration {
7878
additional_files: Vec<String>,
7979
create_alt_stack: bool,
8080
use_alt_stack: bool,
81-
endpoint: Option<Endpoint>,
81+
endpoint: Option<&str>,
8282
resolve_frames: StacktraceCollection,
8383
mut signals: Vec<i32>,
8484
timeout: Option<Duration>,
@@ -91,6 +91,8 @@ impl CrashtrackerConfiguration {
9191
"Cannot create an altstack without using it"
9292
);
9393
let timeout = timeout.unwrap_or(constants::DD_CRASHTRACK_DEFAULT_TIMEOUT);
94+
let endpoint = endpoint.map(Endpoint::from_slice);
95+
9496
if signals.is_empty() {
9597
signals = default_signals();
9698
} else {
@@ -135,7 +137,7 @@ impl CrashtrackerConfiguration {
135137
self.use_alt_stack
136138
}
137139

138-
pub fn endpoint(&self) -> &Option<Endpoint> {
140+
pub(crate) fn endpoint(&self) -> &Option<Endpoint> {
139141
&self.endpoint
140142
}
141143

0 commit comments

Comments
 (0)