diff --git a/ddtrace/appsec/_ddwaf/ddwaf_types.py b/ddtrace/appsec/_ddwaf/ddwaf_types.py index ad5ce493121..d950a8eedbd 100644 --- a/ddtrace/appsec/_ddwaf/ddwaf_types.py +++ b/ddtrace/appsec/_ddwaf/ddwaf_types.py @@ -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 @@ -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),