summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-01-13 03:31:25 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-01-13 03:31:25 +0100
commitd5263778065e62a4a20f3af236f6dde7bbb3afc4 (patch)
tree815a1b38453fea8c392131ae84cc9b5639cfa6d8 /src
parent15cbf6ddd67eeccc751188833076c48dc0a9b429 (diff)
chore: kernel: hotpatch: BitMap `FreeBitMap` bug fix.
Reasons: - This commit enforces BitMapMagIdx check when freeing a so-called heap allocated pointer. - This will prevent many heap corruption issues down the line. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src')
-rw-r--r--src/kernel/KernelKit/TraceSrv.h2
-rw-r--r--src/kernel/NeKit/Atom.h2
-rw-r--r--src/kernel/NeKit/Function.h2
-rw-r--r--src/kernel/src/BitMapMgr.cc4
4 files changed, 6 insertions, 4 deletions
diff --git a/src/kernel/KernelKit/TraceSrv.h b/src/kernel/KernelKit/TraceSrv.h
index 1118e0d9..3294d9be 100644
--- a/src/kernel/KernelKit/TraceSrv.h
+++ b/src/kernel/KernelKit/TraceSrv.h
@@ -19,7 +19,7 @@ namespace TraceSrv {
inline constexpr auto kDebugDelim = ';';
inline constexpr auto kDebugEnd = '\r';
-} // namespace Detail
+} // namespace TraceSrv
} // namespace Kernel
diff --git a/src/kernel/NeKit/Atom.h b/src/kernel/NeKit/Atom.h
index 3dedea32..17f26bcf 100644
--- a/src/kernel/NeKit/Atom.h
+++ b/src/kernel/NeKit/Atom.h
@@ -24,7 +24,7 @@ class Atom final {
const TypeAtomic& operator[](const SizeT& bit) { return (fArrayOfAtoms & (1 << bit)); }
- void operator|(const SizeT& bit) { fArrayOfAtoms |= (1 << bit); }
+ void operator|(const SizeT& bit) { fArrayOfAtoms |= (1 << bit); }
Atom& operator|=(const SizeT& bit) {
this->operator|(bit);
diff --git a/src/kernel/NeKit/Function.h b/src/kernel/NeKit/Function.h
index 77d9aa23..c26c4ea0 100644
--- a/src/kernel/NeKit/Function.h
+++ b/src/kernel/NeKit/Function.h
@@ -17,7 +17,7 @@ class Function final {
Function() = delete;
Function(nullPtr) = delete;
- ~Function() = default;
+ ~Function() = default;
Function(T (*Fn)(Args... args)) : fFn(Fn) { MUST_PASS(fFn); }
Function& operator=(const Function&) = delete;
diff --git a/src/kernel/src/BitMapMgr.cc b/src/kernel/src/BitMapMgr.cc
index 5cae02c1..d15b2a75 100644
--- a/src/kernel/src/BitMapMgr.cc
+++ b/src/kernel/src/BitMapMgr.cc
@@ -47,9 +47,11 @@ namespace HAL {
UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(page_ptr);
+ if (ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) return No;
+
kBitMapCursor += ptr_bit_set[kBitMapSizeIdx];
- ptr_bit_set[kBitMapMagIdx] = kBitMapMagic;
+ ptr_bit_set[kBitMapMagIdx] = 0UL;
ptr_bit_set[kBitMapUsedIdx] = No;
this->GetBitMapStatus(ptr_bit_set);