diff options
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/BitMapMgr.cc | 14 | ||||
| -rw-r--r-- | dev/kernel/src/CxxAbi-AMD64.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/src/DriveMgr.cc | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc index 7f3f8500..63cadde3 100644 --- a/dev/kernel/src/BitMapMgr.cc +++ b/dev/kernel/src/BitMapMgr.cc @@ -95,9 +95,9 @@ namespace Kernel if (!size) return nullptr; - constexpr const UInt32 kStartOffset = 0x1000; + VoidPtr base = reinterpret_cast<VoidPtr>((UIntPtr)base_ptr); - VoidPtr base = reinterpret_cast<VoidPtr>(((UIntPtr)base_ptr) + kStartOffset); + MUST_PASS(base); static SizeT biggest = 0UL; @@ -141,7 +141,15 @@ namespace Kernel return (VoidPtr)ptr_bit_set; } - base = reinterpret_cast<VoidPtr>(reinterpret_cast<UIntPtr>(base) + ((ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) ? (size + pad) : ptr_bit_set[kBitMapSizeIdx])); + UIntPtr raw_base = reinterpret_cast<UIntPtr>(base); + UIntPtr offset = (ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) + ? (size + pad) + : ptr_bit_set[kBitMapSizeIdx]; + + base = reinterpret_cast<VoidPtr>(raw_base + offset); + + if (base == nullptr) + return nullptr; } return nullptr; diff --git a/dev/kernel/src/CxxAbi-AMD64.cc b/dev/kernel/src/CxxAbi-AMD64.cc index 3209a1a9..9270d612 100644 --- a/dev/kernel/src/CxxAbi-AMD64.cc +++ b/dev/kernel/src/CxxAbi-AMD64.cc @@ -25,6 +25,8 @@ EXTERN_C Kernel::Void __cxa_pure_virtual(void* self) EXTERN_C void ___chkstk_ms(void) { + kout << "Stack smashing detected!\r"; + dbg_break_point(); } EXTERN_C int atexit(void (*f)(void*), void* arg, void* dso) diff --git a/dev/kernel/src/DriveMgr.cc b/dev/kernel/src/DriveMgr.cc index 36e0a7e4..0d24d4f8 100644 --- a/dev/kernel/src/DriveMgr.cc +++ b/dev/kernel/src/DriveMgr.cc @@ -110,7 +110,7 @@ namespace Kernel { return "ATA-DMA"; } -#elif defined( __AHCI__) +#elif defined(__AHCI__) const Char* io_drv_kind(Void) { return "AHCI"; |
