From 2516d36ea71362d014907bf175ae88f3df09dbb3 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 1 May 2024 09:50:35 +0200 Subject: kernel: always check if we can create the catalog. Signed-off-by: Amlal El Mahrouss --- Private/Source/AppMain.cxx | 11 ++++++++++- Private/Source/FS/NewFS.cxx | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Private/Source/AppMain.cxx b/Private/Source/AppMain.cxx index c113958a..d3f140d2 100644 --- a/Private/Source/AppMain.cxx +++ b/Private/Source/AppMain.cxx @@ -89,7 +89,16 @@ class FilesystemAutomountProvider final { metadataSz, "FolderInfo"); } - NewOS::kcout << (NewOS::Char*)fNewFS->GetImpl()->ReadCatalog(fNewFS->GetImpl()->GetCatalog("/System/"), 512, "FolderInfo"); + auto systemFolder = fNewFS->GetImpl()->GetCatalog("/System/"); + auto buf = fNewFS->GetImpl()->ReadCatalog(systemFolder, 512, "FolderInfo"); + NewOS::kcout << (NewOS::Char*)buf; + + delete (NewOS::Char*) buf; + delete systemFolder; + + systemFolder = fNewFS->GetImpl()->GetCatalog("/Boot/"); + + NewOS::kcout << systemFolder->Name << NewOS::endl; } } } diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 9074b348..3e247360 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -285,6 +285,11 @@ _Output NewCatalog* NewFSParser::CreateCatalog(_Input const char* name, NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBufPartBlock; + if (partBlock->FreeCatalog < 1) { + delete catalogChild; + return nullptr; + } + catalogChild->DataFork = partBlock->DiskSize - partBlock->StartCatalog; catalogChild->ResourceFork = catalogChild->DataFork; -- cgit v1.2.3