From 8ee54687cb11116901fa820a1b0cc87ef702931e Mon Sep 17 00:00:00 2001 From: alberk8 Date: Mon, 1 Sep 2025 10:13:42 +0800 Subject: [PATCH 1/3] Fix SSID UTF8 Encoding --- System.Device.Wifi/WifiAdapter.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/System.Device.Wifi/WifiAdapter.cs b/System.Device.Wifi/WifiAdapter.cs index 8ebfa83..72aac78 100644 --- a/System.Device.Wifi/WifiAdapter.cs +++ b/System.Device.Wifi/WifiAdapter.cs @@ -5,6 +5,7 @@ using System; using System.Runtime.CompilerServices; +using System.Text; namespace System.Device.Wifi { @@ -91,14 +92,10 @@ private WifiAvailableNetwork[] ParseNativeReports(byte[] nativeReport) WifiNetworks[index].Bsid = BitConverter.ToString(nativeReport, bytePos, 6); bytePos += 6; - // need to convert this programmatically to prevent referencing System.Text - char[] rawSsid = new char[33]; - for (int i = 0; i < 33; i++) - { - rawSsid[i] = (char)nativeReport[bytePos + i]; - } - - WifiNetworks[index].Ssid = new string(rawSsid, 0, 33); + byte[] rawSsid = new byte[33]; + Array.Copy(nativeReport, bytePos, rawSsid, 0, 33); + + WifiNetworks[index].Ssid = Encoding.UTF8.GetString(rawSsid, 0, 33); bytePos += 33; WifiNetworks[index]._rssi = (sbyte)nativeReport[bytePos]; From f80508d95b6946cc672b00d9ccf9202804ffc017 Mon Sep 17 00:00:00 2001 From: alberk8 Date: Mon, 1 Sep 2025 17:36:35 +0800 Subject: [PATCH 2/3] Update System.Device.Wifi/WifiAdapter.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- System.Device.Wifi/WifiAdapter.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/System.Device.Wifi/WifiAdapter.cs b/System.Device.Wifi/WifiAdapter.cs index 72aac78..df64f9c 100644 --- a/System.Device.Wifi/WifiAdapter.cs +++ b/System.Device.Wifi/WifiAdapter.cs @@ -95,7 +95,9 @@ private WifiAvailableNetwork[] ParseNativeReports(byte[] nativeReport) byte[] rawSsid = new byte[33]; Array.Copy(nativeReport, bytePos, rawSsid, 0, 33); - WifiNetworks[index].Ssid = Encoding.UTF8.GetString(rawSsid, 0, 33); + int ssidLength = Array.IndexOf(rawSsid, (byte)0); + if (ssidLength < 0) ssidLength = 33; + WifiNetworks[index].Ssid = Encoding.UTF8.GetString(rawSsid, 0, ssidLength); bytePos += 33; WifiNetworks[index]._rssi = (sbyte)nativeReport[bytePos]; From d4f1c64e122ef9167d6afc3062d342534d031b97 Mon Sep 17 00:00:00 2001 From: alberk8 Date: Tue, 2 Sep 2025 13:22:16 +0800 Subject: [PATCH 3/3] Style --- System.Device.Wifi/WifiAdapter.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/System.Device.Wifi/WifiAdapter.cs b/System.Device.Wifi/WifiAdapter.cs index df64f9c..a49c53f 100644 --- a/System.Device.Wifi/WifiAdapter.cs +++ b/System.Device.Wifi/WifiAdapter.cs @@ -96,7 +96,11 @@ private WifiAvailableNetwork[] ParseNativeReports(byte[] nativeReport) Array.Copy(nativeReport, bytePos, rawSsid, 0, 33); int ssidLength = Array.IndexOf(rawSsid, (byte)0); - if (ssidLength < 0) ssidLength = 33; + if (ssidLength < 0) + { + ssidLength = 33; + } + WifiNetworks[index].Ssid = Encoding.UTF8.GetString(rawSsid, 0, ssidLength); bytePos += 33;