summaryrefslogtreecommitdiffhomepage
path: root/src/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-02-27 12:56:40 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-02-27 12:56:40 +0100
commit0ca3a9f2453e3d9a9b4d96d3eb3b55e416939f30 (patch)
tree52c8583e3114caddc6fb149710b0e6607547921f /src/kernel
parent92e86a036219d31c56d12ba41adab51d62a26ecc (diff)
chore: kernel: FilesystemMgr additions and codebase hardening.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/src/ACPIFactoryInterface.cpp6
-rw-r--r--src/kernel/src/FS/Ext2+IFS.cpp4
-rw-r--r--src/kernel/src/FS/NeFS+FileMgr.cpp11
-rw-r--r--src/kernel/src/FS/OpenHeFS+FileMgr.cpp28
-rw-r--r--src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp4
-rw-r--r--src/kernel/src/HeapMgr.cpp6
-rw-r--r--src/kernel/src/Swap/DiskSwap.cpp2
7 files changed, 45 insertions, 16 deletions
diff --git a/src/kernel/src/ACPIFactoryInterface.cpp b/src/kernel/src/ACPIFactoryInterface.cpp
index 0b5ad18e..4d3e526d 100644
--- a/src/kernel/src/ACPIFactoryInterface.cpp
+++ b/src/kernel/src/ACPIFactoryInterface.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -20,10 +20,12 @@ ErrorOr<voidPtr> ACPIFactoryInterface::Find(const Char* signature) {
RSDP* rsp_ptr = reinterpret_cast<RSDP*>(this->fRsdp);
- if (rsp_ptr->Revision < kMinACPIVer) return ErrorOr<voidPtr>{-kErrorInvalidData};
+ if (!rsp_ptr || rsp_ptr->Revision < kMinACPIVer) return ErrorOr<voidPtr>{-kErrorInvalidData};
RSDT* xsdt = reinterpret_cast<RSDT*>(rsp_ptr->RsdtAddress);
+ if (!xsdt) return ErrorOr<voidPtr>{-kErrorInvalidData};
+
Int64 num = (xsdt->Length - sizeof(SDT)) / sizeof(Int64);
/***
diff --git a/src/kernel/src/FS/Ext2+IFS.cpp b/src/kernel/src/FS/Ext2+IFS.cpp
index 3c724de5..17b23abb 100644
--- a/src/kernel/src/FS/Ext2+IFS.cpp
+++ b/src/kernel/src/FS/Ext2+IFS.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -15,6 +15,8 @@
#include <NeKit/KernelPanic.h>
#include <NeKit/Utils.h>
+/// @note There's no current maintainer of Ext2, the position is vacant.
+
constexpr static UInt32 EXT2_DIRECT_BLOCKS = 12;
constexpr static UInt32 EXT2_SINGLE_INDIRECT_INDEX = 12;
constexpr static UInt32 EXT2_DOUBLE_INDIRECT_INDEX = 13;
diff --git a/src/kernel/src/FS/NeFS+FileMgr.cpp b/src/kernel/src/FS/NeFS+FileMgr.cpp
index b351c65e..2a14ba57 100644
--- a/src/kernel/src/FS/NeFS+FileMgr.cpp
+++ b/src/kernel/src/FS/NeFS+FileMgr.cpp
@@ -19,12 +19,12 @@ NeFileSystemMgr::NeFileSystemMgr() {
mParser = new NeFileSystemParser();
MUST_PASS(mParser);
- kout << "We are done allocating NeFileSystemParser...\n";
+ kout << "NeFS: Allocated NeFileSystemParser...\n";
}
NeFileSystemMgr::~NeFileSystemMgr() {
if (mParser) {
- kout << "Destroying NeFileSystemParser...\n";
+ kout << "NeFS: Destroying NeFileSystemParser...\n";
delete mParser;
mParser = nullptr;
}
@@ -247,7 +247,11 @@ _Output NeFileSystemParser* NeFileSystemMgr::GetParser() {
static inline bool is_valid_nefs_catalog(NodePtr node) {
if (!node) return false;
+
auto cat = reinterpret_cast<NEFS_CATALOG_STRUCT*>(node);
+
+ if (cat->ForkOrCatalog) return false;
+
switch (cat->Kind) {
case kNeFSCatalogKindFile:
case kNeFSCatalogKindDir:
@@ -257,13 +261,16 @@ static inline bool is_valid_nefs_catalog(NodePtr node) {
default:
return false;
}
+
bool null_found = false;
+
for (int i = 0; i < kNeFSCatalogNameLen; ++i) {
if (cat->Name[i] == 0) {
null_found = true;
break;
}
}
+
if (!null_found) return false;
return true;
}
diff --git a/src/kernel/src/FS/OpenHeFS+FileMgr.cpp b/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
index 3300759f..3161ec8c 100644
--- a/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
+++ b/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -17,12 +17,13 @@ HeFileSystemMgr::HeFileSystemMgr() {
mParser = new HeFileSystemParser();
MUST_PASS(mParser);
- kout << "We are done allocating HeFileSystemParser...\r";
+ kout << "OpenHeFS: Allocated HeFileSystemParser...\r";
}
HeFileSystemMgr::~HeFileSystemMgr() {
if (mParser) {
- kout << "Destroying HeFileSystemParser...\r";
+ kout << "OpenHeFS: Destroying HeFileSystemParser...\r";
+
delete mParser;
mParser = nullptr;
}
@@ -37,7 +38,16 @@ bool HeFileSystemMgr::Remove(_Input const Char* path) {
return NO;
}
- return YES;
+ auto len = oe_string_len<Char>(path);
+
+ if (len == 0) return NO;
+
+ Utf8Char* out = static_cast<Utf8Char*>(RTL_ALLOCA(sizeof(Utf8Char) * len));
+
+ err_local_get() = kErrorSuccess;
+
+ bool ret = mParser->DeleteINode(&mDriveTrait, 0, nullptr, out, 0);
+ return ret;
}
/// @brief Creates a node with the specified.
@@ -52,6 +62,8 @@ NodePtr HeFileSystemMgr::Create(_Input const Char* path) {
// TODO: It needs its own helper!
SizeT len = oe_string_len<Char>(path);
+ if (len == 0) return nullptr;
+
Utf8Char* out = static_cast<Utf8Char*>(RTL_ALLOCA(sizeof(Utf8Char) * len));
for (SizeT indx = 0UL; indx < len; ++indx) {
@@ -66,8 +78,8 @@ NodePtr HeFileSystemMgr::Create(_Input const Char* path) {
kout << "OpenHeFS: ERROR: Check KPC.\r";
- err_local_get() = kErrorDiskIsFull;
-
+ err_local_get() = kErrorDiskIsFull;
+
return nullptr;
}
@@ -83,6 +95,8 @@ NodePtr HeFileSystemMgr::CreateDirectory(const Char* path) {
// TODO: It needs its own helper!
SizeT len = oe_string_len<Char>(path);
+ if (len == 0) return nullptr;
+
Utf8Char* out = static_cast<Utf8Char*>(RTL_ALLOCA(sizeof(Utf8Char) * len));
for (SizeT indx = 0UL; indx < len; ++indx) {
@@ -114,6 +128,8 @@ NodePtr HeFileSystemMgr::CreateAlias(const Char* path) {
// TODO: It needs its own helper!
SizeT len = oe_string_len<Char>(path);
+ if (len == 0) return nullptr;
+
Utf8Char* out = static_cast<Utf8Char*>(RTL_ALLOCA(sizeof(Utf8Char) * len));
for (SizeT indx = 0UL; indx < len; ++indx) {
diff --git a/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp b/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
index d51a95d2..721484d4 100644
--- a/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
+++ b/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -326,7 +326,7 @@ namespace Detail {
if (tmpend->fChecksum !=
ke_calculate_crc32((Char*) tmpend, sizeof(HEFS_INDEX_NODE_DIRECTORY)))
- ke_panic(RUNTIME_CHECK_FILESYSTEM, "Bad CRC32 value, aborting.");
+ ke_panic(RUNTIME_CHECK_FILESYSTEM, "OpenHeFS: Bad CRC32 value aborting.");
if (delete_or_create)
--tmpend->fEntryCount;
diff --git a/src/kernel/src/HeapMgr.cpp b/src/kernel/src/HeapMgr.cpp
index ef25abb7..5093eea2 100644
--- a/src/kernel/src/HeapMgr.cpp
+++ b/src/kernel/src/HeapMgr.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -20,13 +20,14 @@
======================================== */
-//! @file HeapMgr.cc
+//! @file HeapMgr.cpp
//! @brief Heap system that serves as the main memory manager.
#define kHeapMgrMagic (0xD4D75)
#define kHeapMgrAlignSz (4U)
namespace Kernel {
+
/// @brief Implementation details.
namespace Detail {
struct PACKED MM_INFORMATION_BLOCK;
@@ -257,4 +258,5 @@ _Output Boolean mm_protect_ptr(VoidPtr heap_ptr) {
return No;
}
+
} // namespace Kernel
diff --git a/src/kernel/src/Swap/DiskSwap.cpp b/src/kernel/src/Swap/DiskSwap.cpp
index 7a926dc5..2b45ae92 100644
--- a/src/kernel/src/Swap/DiskSwap.cpp
+++ b/src/kernel/src/Swap/DiskSwap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel