From 9625da3ea07111bbd3c6a8870a3d4a901dc469d1 Mon Sep 17 00:00:00 2001 From: Yaakov Date: Fri, 13 Sep 2024 16:20:28 +1000 Subject: [PATCH 1/3] Fix CA2022 warnings ahead of .NET 9 --- SteamKit2/SteamKit2/Util/StreamHelpers.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SteamKit2/SteamKit2/Util/StreamHelpers.cs b/SteamKit2/SteamKit2/Util/StreamHelpers.cs index e6c41e83e..82b93adde 100644 --- a/SteamKit2/SteamKit2/Util/StreamHelpers.cs +++ b/SteamKit2/SteamKit2/Util/StreamHelpers.cs @@ -11,7 +11,7 @@ public static short ReadInt16(this Stream stream) { Span data = stackalloc byte[sizeof(Int16)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToInt16( data ); } @@ -19,7 +19,7 @@ public static ushort ReadUInt16(this Stream stream) { Span data = stackalloc byte[sizeof(UInt16)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToUInt16( data ); } @@ -27,7 +27,7 @@ public static int ReadInt32(this Stream stream) { Span data = stackalloc byte[sizeof(Int32)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToInt32( data ); } @@ -35,7 +35,7 @@ public static long ReadInt64(this Stream stream) { Span data = stackalloc byte[sizeof(Int64)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToInt64( data ); } @@ -43,7 +43,7 @@ public static uint ReadUInt32(this Stream stream) { Span data = stackalloc byte[sizeof(UInt32)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToUInt32( data ); } @@ -51,7 +51,7 @@ public static ulong ReadUInt64(this Stream stream) { Span data = stackalloc byte[sizeof(UInt64)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToUInt64( data ); } @@ -59,7 +59,7 @@ public static float ReadFloat( this Stream stream ) { Span data = stackalloc byte[sizeof(float)]; - stream.Read( data ); + stream.ReadExactly( data ); return BitConverter.ToSingle( data ); } @@ -80,7 +80,7 @@ public static string ReadNullTermString( this Stream stream, Encoding encoding ) while ( true ) { data.Clear(); - stream.Read( data ); + stream.ReadExactly( data ); if ( encoding.GetString( data ) == NullTerminator ) { From b26cfbbf30e6d2a93f05d42caecaceb94f12d014 Mon Sep 17 00:00:00 2001 From: Yaakov Date: Fri, 13 Sep 2024 16:43:43 +1000 Subject: [PATCH 2/3] Fix failing test --- SteamKit2/Tests/StreamHelpersFacts.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SteamKit2/Tests/StreamHelpersFacts.cs b/SteamKit2/Tests/StreamHelpersFacts.cs index b8b1e2f0c..1a2f58047 100644 --- a/SteamKit2/Tests/StreamHelpersFacts.cs +++ b/SteamKit2/Tests/StreamHelpersFacts.cs @@ -93,7 +93,7 @@ void ThreadStart(object o) var threadNumber = (int)o; using var ms = new MemoryStream(); - var bytes = BitConverter.GetBytes( threadNumber ); + var bytes = BitConverter.GetBytes( ( long )threadNumber ); ms.Write( bytes, 0, bytes.Length ); for ( var i = 0; i < 1000; i++ ) From 3183100dce81acdc13c0cb65ad0725f474102fb4 Mon Sep 17 00:00:00 2001 From: Yaakov Date: Fri, 13 Sep 2024 16:44:00 +1000 Subject: [PATCH 3/3] Fix reading of non-null-terminated string that ends the stream --- SteamKit2/SteamKit2/Util/StreamHelpers.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SteamKit2/SteamKit2/Util/StreamHelpers.cs b/SteamKit2/SteamKit2/Util/StreamHelpers.cs index 82b93adde..c4481f616 100644 --- a/SteamKit2/SteamKit2/Util/StreamHelpers.cs +++ b/SteamKit2/SteamKit2/Util/StreamHelpers.cs @@ -80,9 +80,10 @@ public static string ReadNullTermString( this Stream stream, Encoding encoding ) while ( true ) { data.Clear(); - stream.ReadExactly( data ); - if ( encoding.GetString( data ) == NullTerminator ) + var bytesRead = stream.ReadAtLeast( data, data.Length, throwOnEndOfStream: false ); + + if ( bytesRead == 0 || encoding.GetString( data ) == NullTerminator ) { break; }