summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/Swap
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-10-26 16:01:12 +0100
committerGitHub <noreply@github.com>2025-10-26 16:01:12 +0100
commit36269e57831e560df6a0da9c9d02c00671b0163d (patch)
tree69f6a0c6f08ef5ef2f6fcbb7302537dbce222e6e /dev/kernel/src/Swap
parent2117a9b0f4b84f5bd6c99566bcf5849a64104467 (diff)
parentb6ce6640afaf6c1cc6ad274f3053b2e218a49554 (diff)
Merge pull request #68 from nekernel-org/dev
NeKernel: v0.0.6e1
Diffstat (limited to 'dev/kernel/src/Swap')
-rw-r--r--dev/kernel/src/Swap/DiskSwap.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/dev/kernel/src/Swap/DiskSwap.cc b/dev/kernel/src/Swap/DiskSwap.cc
index 8578450c..99efb2c0 100644
--- a/dev/kernel/src/Swap/DiskSwap.cc
+++ b/dev/kernel/src/Swap/DiskSwap.cc
@@ -8,6 +8,8 @@
#include <SwapKit/DiskSwap.h>
namespace Kernel {
+static constexpr UInt32 kSwapDiskHeaderMagic = 0x44535750; // 'DSWP'
+
/***********************************************************************************/
/// @brief Write memory chunk onto disk.
/// @param fork_name The swap name to recognize this memory region.
@@ -20,7 +22,7 @@ BOOL DiskSwapInterface::Write(const Char* fork_name, SizeT fork_name_len, SWAP_D
if (*fork_name == 0) return NO;
- if (!data) return NO;
+ if (!data || data->fMagic != kSwapDiskHeaderMagic) return NO;
FileStream file(kSwapPageFilePath, kRestrictWRB);
@@ -52,6 +54,11 @@ SWAP_DISK_HEADER* DiskSwapInterface::Read(const Char* fork_name, SizeT fork_name
VoidPtr blob = file.Read(fork_name, sizeof(SWAP_DISK_HEADER) + data_len);
+ if (!blob || ((SWAP_DISK_HEADER*) blob)->fMagic != kSwapDiskHeaderMagic) {
+ if (blob) mm_free_ptr(blob);
+ return nullptr;
+ }
+
return reinterpret_cast<SWAP_DISK_HEADER*>(blob);
}
} // namespace Kernel