From 51fa1b2cb0bb54c0eb235c9d1fa68a7e1abaf464 Mon Sep 17 00:00:00 2001 From: Mary <me@thog.eu> Date: Mon, 25 Oct 2021 00:13:20 +0200 Subject: hle: Improve safety (#2778) * timezone: Make timezone implementation safe * hle: Do not use TrimEnd to parse ASCII strings This adds an util that handle reading an ASCII string in a safe way. Previously it was possible to read malformed data that could cause various undefined behaviours in multiple services. * hid: Remove an useless unsafe modifier on keyboard update * Address gdkchan's comment * Address gdkchan's comment --- Ryujinx.HLE/FileSystem/Content/SystemVersion.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'Ryujinx.HLE/FileSystem/Content/SystemVersion.cs') diff --git a/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs b/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs index 6e7e85fd..3f19e135 100644 --- a/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs +++ b/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs @@ -1,3 +1,4 @@ +using Ryujinx.HLE.Utilities; using System.IO; using System.Text; @@ -30,10 +31,10 @@ namespace Ryujinx.HLE.FileSystem.Content reader.ReadBytes(2); // Padding - PlatformString = Encoding.ASCII.GetString(reader.ReadBytes(0x20)).TrimEnd('\0'); - Hex = Encoding.ASCII.GetString(reader.ReadBytes(0x40)).TrimEnd('\0'); - VersionString = Encoding.ASCII.GetString(reader.ReadBytes(0x18)).TrimEnd('\0'); - VersionTitle = Encoding.ASCII.GetString(reader.ReadBytes(0x80)).TrimEnd('\0'); + PlatformString = StringUtils.ReadInlinedAsciiString(reader, 0x20); + Hex = StringUtils.ReadInlinedAsciiString(reader, 0x40); + VersionString = StringUtils.ReadInlinedAsciiString(reader, 0x18); + VersionTitle = StringUtils.ReadInlinedAsciiString(reader, 0x80); } } } -- cgit v1.2.3-70-g09d2