Skip to content

Commit 2b17318

Browse files
authored
[ASM] ensure struct is on the stack before passing to native code (#5886)
## Summary of changes Back port of: #5885
1 parent abd12ae commit 2b17318

File tree

4 files changed

+5
-4
lines changed

4 files changed

+5
-4
lines changed

tracer/src/Datadog.Trace/AppSec/Waf/Waf.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ private unsafe UpdateResult UpdateWafAndDispose(IEncodeResult updateData)
127127
var diagnosticsValue = new DdwafObjectStruct { Type = DDWAF_OBJ_TYPE.DDWAF_OBJ_MAP };
128128
try
129129
{
130-
var newHandle = _wafLibraryInvoker.Update(_wafHandle, ref updateData.ResultDdwafObject, ref diagnosticsValue);
130+
var updateObject = updateData.ResultDdwafObject;
131+
var newHandle = _wafLibraryInvoker.Update(_wafHandle, ref updateObject, ref diagnosticsValue);
131132
if (newHandle != IntPtr.Zero)
132133
{
133134
var oldHandle = _wafHandle;

tracer/src/Datadog.Trace/AppSec/WafEncoding/Encoder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ internal EncodeResult(List<IntPtr> pointers, UnmanagedMemoryPool pool, ref Ddwaf
690690
_result = result;
691691
}
692692

693-
public ref DdwafObjectStruct ResultDdwafObject => ref _result;
693+
public DdwafObjectStruct ResultDdwafObject => _result;
694694

695695
public void Dispose()
696696
{

tracer/src/Datadog.Trace/AppSec/WafEncoding/EncoderLegacy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ internal EncodeResult(DdwafObjectStruct obj, WafLibraryInvoker wafLibraryInvoker
334334
_wafLibraryInvoker = wafLibraryInvoker;
335335
}
336336

337-
public ref DdwafObjectStruct ResultDdwafObject => ref _resultDdwafObject;
337+
public DdwafObjectStruct ResultDdwafObject => _resultDdwafObject;
338338

339339
public void Dispose() => _wafLibraryInvoker.ObjectFree(ref _resultDdwafObject);
340340
}

tracer/src/Datadog.Trace/AppSec/WafEncoding/IEncodeResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ namespace Datadog.Trace.AppSec.WafEncoding;
1010

1111
internal interface IEncodeResult : IDisposable
1212
{
13-
public ref DdwafObjectStruct ResultDdwafObject { get; }
13+
public DdwafObjectStruct ResultDdwafObject { get; }
1414
}

0 commit comments

Comments
 (0)