aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-11-01 21:33:13 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-12-11 12:06:25 +0100
commit17f6c3600f3aba572e1fa85bb45fc748e3f76359 (patch)
treea00abc6cdd86098e44bd74cc181ff08168892701
parentinstaller: use newer 3.11 stable branch of WiX (diff)
downloadwireguard-windows-17f6c3600f3aba572e1fa85bb45fc748e3f76359.tar.xz
wireguard-windows-17f6c3600f3aba572e1fa85bb45fc748e3f76359.zip
embeddable-dll-service: acquire pointer reference before atomic increment
-rw-r--r--embeddable-dll-service/csharp/Ringlogger.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/embeddable-dll-service/csharp/Ringlogger.cs b/embeddable-dll-service/csharp/Ringlogger.cs
index c265142c..d0957926 100644
--- a/embeddable-dll-service/csharp/Ringlogger.cs
+++ b/embeddable-dll-service/csharp/Ringlogger.cs
@@ -116,12 +116,19 @@ namespace Tunnel
get => _view.ReadUInt32(offsetNextIndex);
set => _view.Write(offsetNextIndex, value);
}
- public unsafe UInt32 InsertNextIndex() => (UInt32)Interlocked.Increment(ref Unsafe.AsRef<Int32>((_view.SafeMemoryMappedViewHandle.DangerousGetHandle() + offsetNextIndex).ToPointer()));
+ public unsafe UInt32 InsertNextIndex()
+ {
+ byte* pointer = null;
+ _view.SafeMemoryMappedViewHandle.AcquirePointer(ref pointer);
+ var ret = (UInt32)Interlocked.Increment(ref Unsafe.AsRef<Int32>(pointer + offsetNextIndex));
+ _view.SafeMemoryMappedViewHandle.ReleasePointer();
+ return ret;
+ }
public UInt32 LineCount => maxLines;
public Line this[UInt32 i] => new Line(_view, i % maxLines);
- public void Clear() => _view.WriteArray(0, new byte[Log.Bytes], 0, Log.Bytes);
+ public void Clear() => _view.WriteArray(0, new byte[Bytes], 0, Bytes);
}
private readonly Log _log;