Skip to content

Commit

Permalink
Merge branch '2.12' into backport-10401-to-2.12
Browse files Browse the repository at this point in the history
  • Loading branch information
romainkomorndatadog authored Aug 29, 2024
2 parents e10f518 + 8d3373c commit 69d45bf
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 3 deletions.
4 changes: 2 additions & 2 deletions ddtrace/appsec/_ddwaf/ddwaf_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def create_without_limits(cls, struct: DDWafRulesType) -> "ddwaf_object":
def struct(self) -> DDWafRulesType:
"""Generate a python structure from ddwaf_object"""
if self.type == DDWAF_OBJ_TYPE.DDWAF_OBJ_STRING:
return self.value.stringValue.decode("UTF-8", errors="ignore")
return self.value.stringValue[: self.nbEntries].decode("UTF-8", errors="ignore")
if self.type == DDWAF_OBJ_TYPE.DDWAF_OBJ_MAP:
return {
self.value.array[i].parameterName.decode("UTF-8", errors="ignore"): self.value.array[i].struct
Expand Down Expand Up @@ -211,7 +211,7 @@ def __repr__(self):

class ddwaf_value(ctypes.Union):
_fields_ = [
("stringValue", ctypes.c_char_p),
("stringValue", ctypes.POINTER(ctypes.c_char)),
("uintValue", ctypes.c_ulonglong),
("intValue", ctypes.c_longlong),
("array", ddwaf_object_p),
Expand Down
1 change: 1 addition & 0 deletions ddtrace/internal/core/crashtracking.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def start() -> bool:
crashtracker.set_runtime_id(get_runtime_id())
crashtracker.set_library_version(version.get_version())
crashtracker.set_alt_stack(bool(crashtracker_config.alt_stack))
crashtracker.set_wait_for_receiver(bool(crashtracker_config.wait_for_receiver))
if crashtracker_config.stacktrace_resolver == "fast":
crashtracker.set_resolve_frames_fast()
elif crashtracker_config.stacktrace_resolver == "full":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ def set_library_version(profiler_version: StringType) -> None: ...
def set_stdout_filename(filename: StringType) -> None: ...
def set_stderr_filename(filename: StringType) -> None: ...
def set_alt_stack(alt_stack: bool) -> None: ...
def set_wait_for_receiver(wait: bool) -> None: ...
def set_resolve_frames_disable() -> None: ...
def set_resolve_frames_fast() -> None: ...
def set_resolve_frames_full() -> None: ...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ cdef extern from "crashtracker_interface.hpp":
void crashtracker_set_stdout_filename(string_view filename)
void crashtracker_set_stderr_filename(string_view filename)
void crashtracker_set_alt_stack(bint alt_stack)
void crashtracker_set_wait_for_receiver(bint wait)
void crashtracker_set_resolve_frames_disable()
void crashtracker_set_resolve_frames_fast()
void crashtracker_set_resolve_frames_full()
Expand Down Expand Up @@ -98,6 +99,10 @@ def set_alt_stack(alt_stack: bool) -> None:
crashtracker_set_alt_stack(alt_stack)


def set_wait_for_receiver(wait: bool) -> None:
crashtracker_set_wait_for_receiver(wait)


def set_resolve_frames_disable() -> None:
crashtracker_set_resolve_frames_disable()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class Crashtracker
{
private:
bool create_alt_stack = false;
bool wait_for_receiver = true;
std::optional<std::string> stderr_filename{ std::nullopt };
std::optional<std::string> stdout_filename{ std::nullopt };
std::string path_to_receiver_binary;
Expand Down Expand Up @@ -71,6 +72,7 @@ class Crashtracker
void set_library_version(std::string_view _library_version);
void set_url(std::string_view _url);
void set_tag(std::string_view _key, std::string_view _value);
void set_wait_for_receiver(bool _wait);

void set_create_alt_stack(bool _create_alt_stack);
void set_stderr_filename(std::string_view _stderr_filename);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ extern "C"
void crashtracker_set_stdout_filename(std::string_view filename);
void crashtracker_set_stderr_filename(std::string_view filename);
void crashtracker_set_alt_stack(bool alt_stack);
void crashtracker_set_wait_for_receiver(bool wait);
void crashtracker_set_resolve_frames_disable();
void crashtracker_set_resolve_frames_fast();
void crashtracker_set_resolve_frames_full();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ Datadog::Crashtracker::set_create_alt_stack(bool _create_alt_stack)
create_alt_stack = _create_alt_stack;
}

void
Datadog::Crashtracker::set_wait_for_receiver(bool _wait)
{
wait_for_receiver = _wait;
}

void
Datadog::Crashtracker::set_env(std::string_view _env)
{
Expand Down Expand Up @@ -122,7 +128,7 @@ Datadog::Crashtracker::get_config()
config.endpoint = ddog_endpoint_from_url(to_slice(url));
config.resolve_frames = resolve_frames;
config.timeout_secs = timeout_secs;

config.wait_for_receiver = wait_for_receiver;
return config;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ crashtracker_set_alt_stack(bool alt_stack) // cppcheck-suppress unusedFunction
crashtracker.set_create_alt_stack(alt_stack);
}

void
crashtracker_set_wait_for_receiver(bool wait) // cppcheck-suppress unusedFunction
{
crashtracker.set_wait_for_receiver(wait);
}

void
crashtracker_set_resolve_frames_disable() // cppcheck-suppress unusedFunction
{
Expand Down
8 changes: 8 additions & 0 deletions ddtrace/settings/crashtracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,13 @@ class CrashtrackingConfig(En):
"This is generally useful only for dd-trace-py development.",
)

wait_for_receiver = En.v(
bool,
"wait_for_receiver",
default=True,
help_type="Boolean",
help="Whether to wait for the crashtracking receiver",
)


config = CrashtrackingConfig()

0 comments on commit 69d45bf

Please sign in to comment.