From f4370b44bacfa3035496aa6f5aca24469326ebff Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 5 Jul 2025 10:32:16 +0200 Subject: feat: add magic check in `fsck.hefs` Signed-off-by: Amlal El Mahrouss --- dev/kernel/FirmwareKit/EPM.h | 12 +++++++----- dev/kernel/KernelKit/CodeMgr.h | 4 ++++ dev/kernel/KernelKit/CoreProcessScheduler.h | 4 ++++ dev/kernel/KernelKit/FileMgr.h | 3 ++- dev/libMsg/MsgKit/Network.h | 2 +- tooling/fsck.hefs.cc | 8 ++++++-- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/dev/kernel/FirmwareKit/EPM.h b/dev/kernel/FirmwareKit/EPM.h index 05291929..dcab3607 100644 --- a/dev/kernel/FirmwareKit/EPM.h +++ b/dev/kernel/FirmwareKit/EPM.h @@ -97,11 +97,13 @@ struct PACKED EPM_PART_BLOCK { ///! @brief Use in boot block version field. enum { - kEPMInvalid = 0x00, - kEPMGeneric = 0xcf, /// @brief Generic OS - kEPMLinux = 0x8f, /// @brief Linux on EPM - kEPMBSD = 0x9f, /// @brief Berkeley Soft. Distribution - kEPMNeKernel = 0x1f, /// @brief NeKernel. + kEPMInvalid = 0x00, + kEPMGeneric = 0xcf, /// @brief Generic OS + kEPMLinux = 0x8f, /// @brief Linux on EPM. + kEPMBSD = 0x9f, /// @brief BSD on EPM. + kEPMNeKernel = 0x1f, /// @brief NeKernel. + kEPMVMKernel = 0x2f, /// @brief VMKernel. + /// @note ... the rest is reserved for future OSes. kEPMInvalidOS = 0xff, }; diff --git a/dev/kernel/KernelKit/CodeMgr.h b/dev/kernel/KernelKit/CodeMgr.h index 072ba4d5..c733bc47 100644 --- a/dev/kernel/KernelKit/CodeMgr.h +++ b/dev/kernel/KernelKit/CodeMgr.h @@ -18,6 +18,10 @@ #include #include +/// @file CodeMgr.h +/// @brief Code Manager header file. +/// @author Amlal El Mahrouss (amlal@nekernel.org) + namespace Kernel { /// @brief Main process entrypoint. typedef void (*rtl_main_kind)(void); diff --git a/dev/kernel/KernelKit/CoreProcessScheduler.h b/dev/kernel/KernelKit/CoreProcessScheduler.h index f64cbf22..e5606987 100644 --- a/dev/kernel/KernelKit/CoreProcessScheduler.h +++ b/dev/kernel/KernelKit/CoreProcessScheduler.h @@ -9,6 +9,10 @@ #include #include +/// @file CoreProcessScheduler.h +/// @brief Core Process Scheduler header file. +/// @author Amlal El Mahrouss (amlal@nekernel.org) + #define kSchedMinMicroTime (AffinityKind::kStandard) #define kSchedInvalidPID (-1) #define kSchedProcessLimitPerTeam (32U) diff --git a/dev/kernel/KernelKit/FileMgr.h b/dev/kernel/KernelKit/FileMgr.h index 13eeabdf..adcb1d6e 100644 --- a/dev/kernel/KernelKit/FileMgr.h +++ b/dev/kernel/KernelKit/FileMgr.h @@ -4,6 +4,7 @@ File: FileMgr.h Purpose: Kernel file manager. + Author: Amlal El Mahrouss (amlal@nekernel.org) ------------------------------------------- */ @@ -65,10 +66,10 @@ enum { kFileReadAll = 101, kFileReadChunk = 102, kFileWriteChunk = 103, - kFileIOCnt = (kFileWriteChunk - kFileWriteAll) + 1, // File flags (HFS+, NeFS specific) kFileFlagRsrc = 104, kFileFlagData = 105, + kFileIOCnt = (kFileFlagData - kFileWriteAll) + 1, }; typedef VoidPtr NodePtr; diff --git a/dev/libMsg/MsgKit/Network.h b/dev/libMsg/MsgKit/Network.h index c7b562a2..7dd56877 100644 --- a/dev/libMsg/MsgKit/Network.h +++ b/dev/libMsg/MsgKit/Network.h @@ -6,4 +6,4 @@ #pragma once -#include \ No newline at end of file +#include \ No newline at end of file diff --git a/tooling/fsck.hefs.cc b/tooling/fsck.hefs.cc index ce386152..0fa697be 100644 --- a/tooling/fsck.hefs.cc +++ b/tooling/fsck.hefs.cc @@ -18,7 +18,7 @@ int main(int argc, char** argv) { auto args = mkfs::detail::build_args(argc, argv); - auto opt_disk = mkfs::get_option(args, "-i"); + auto opt_disk = mkfs::get_option(args, "-i"); if (opt_disk.empty()) { mkfs::console_out() << "fsck: hefs: error: HeFS is empty! Exiting..." @@ -26,7 +26,6 @@ int main(int argc, char** argv) { return EXIT_FAILURE; } - std::ifstream output_device(opt_disk, std::ios::binary); if (!output_device.good()) { @@ -37,6 +36,11 @@ int main(int argc, char** argv) { mkfs::hefs::BootNode boot_node; std::memset(&boot_node, 0, sizeof(boot_node)); + if (strncmp(boot_node.magic, kHeFSMagic, kHeFSMagicLen) != 0) { + mkfs::console_out() << "hefs: error: Device is not an HeFS disk: " << opt_disk << "\n"; + return EXIT_FAILURE; + } + mkfs::console_out() << "hefs: HeFS partition is is healthy, exiting...\r"; return EXIT_SUCCESS; -- cgit v1.2.3