From 85f95013b577353501567507bbabc4b648f08e2f Mon Sep 17 00:00:00 2001 From: Quajak Date: Tue, 27 Oct 2020 21:52:51 +0100 Subject: [PATCH] Fix incorrect size of array when setting metadata of long file names --- .../FileSystem/FAT/Listing/FatDiretoryEntry.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/Cosmos.System2/FileSystem/FAT/Listing/FatDiretoryEntry.cs b/source/Cosmos.System2/FileSystem/FAT/Listing/FatDiretoryEntry.cs index c66dcb93d..b227a5fe7 100644 --- a/source/Cosmos.System2/FileSystem/FAT/Listing/FatDiretoryEntry.cs +++ b/source/Cosmos.System2/FileSystem/FAT/Listing/FatDiretoryEntry.cs @@ -1295,10 +1295,10 @@ namespace Cosmos.System.FileSystem.FAT.Listing if (xData.Length > 0) { - var xValue = new byte[aEntryMetadata.DataLength]; + var xValue = new byte[aEntryMetadata.DataLength * 4]; xValue.SetUInt32(0, aValue); uint offset = aEntryHeaderDataOffset + aEntryMetadata.DataOffset; - Array.Copy(xValue, 0, xData, (int)offset, (int)aEntryMetadata.DataLength); + Array.Copy(xValue, 0, xData, (int)offset, (int)aEntryMetadata.DataLength * 4); SetDirectoryEntryData(xData); } } @@ -1340,11 +1340,12 @@ namespace Cosmos.System.FileSystem.FAT.Listing if (xData.Length > 0) { - var xValue = new byte[aEntryMetadata.DataLength]; + Global.mFileSystemDebugger.SendInternal("length = " + aEntryMetadata.DataLength); + var xValue = new byte[aEntryMetadata.DataLength * 4]; xValue.SetUInt32(0, (uint)aValue); uint offset = aEntryHeaderDataOffset + aEntryMetadata.DataOffset; Global.mFileSystemDebugger.SendInternal("offset = " + offset); - Array.Copy(xValue, 0, xData, (int)offset, (int)aEntryMetadata.DataLength); + Array.Copy(xValue, 0, xData, (int)offset, (int)aEntryMetadata.DataLength * 4); SetDirectoryEntryData(xData); } }