From 68a2172e20ebf34098de71464668239d9064eeb8 Mon Sep 17 00:00:00 2001 From: Amlal Date: Sat, 18 Jan 2025 03:24:43 +0100 Subject: Network/IPC: Don't use GetCurrentProcess directly, it might target the wrong process. Signed-off-by: Amlal --- dev/Kernel/FSKit/NeFS.h | 2 +- dev/Kernel/KernelKit/DriveMgr.h | 30 +++++++++++++++--------------- dev/Kernel/src/DriveMgr.cc | 4 ++-- dev/Kernel/src/FS/NeFS.cc | 26 +++++++++++++------------- dev/Kernel/src/Network/IPCMsg.cc | 19 ++++--------------- 5 files changed, 35 insertions(+), 46 deletions(-) (limited to 'dev') diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h index 4593c8e5..d707a7de 100644 --- a/dev/Kernel/FSKit/NeFS.h +++ b/dev/Kernel/FSKit/NeFS.h @@ -269,7 +269,7 @@ namespace Kernel /// @param catalog it's catalog /// @param theFork the fork itself. /// @return the fork - _Output BOOL CreateFork(_Input NFS_FORK_STRUCT& in); + _Output BOOL CreateFork(_Input NFS_FORK_STRUCT& in); /// @brief Find fork inside New filesystem. /// @param catalog the catalog. diff --git a/dev/Kernel/KernelKit/DriveMgr.h b/dev/Kernel/KernelKit/DriveMgr.h index c1e42ba3..b30f1e0b 100644 --- a/dev/Kernel/KernelKit/DriveMgr.h +++ b/dev/Kernel/KernelKit/DriveMgr.h @@ -49,24 +49,24 @@ namespace Kernel /// @brief Media drive trait type. struct DriveTrait final { - Char fName[kDriveNameLen]; // /System, /Boot, //./Devices/USB... - Int32 fKind; // fMassStorage, fFloppy, fOpticalDisc. - Int32 fFlags; // fReadOnly, fEPMDrive... + Char fName[kDriveNameLen]; // /System, /Boot, //./Devices/USB... + Int32 fKind; // fMassStorage, fFloppy, fOpticalDisc. + Int32 fFlags; // fReadOnly, fEPMDrive... - /// @brief Packet drive (StorageKit compilant.) + /// @brief Packet drive (StorageKit compilant.) struct DrivePacket final { - VoidPtr fPacketContent{nullptr}; //! packet body. - Char fPacketMime[kDriveNameLen] = "*/*"; //! identify what we're sending. - SizeT fPacketSize{0UL}; //! packet size - UInt32 fPacketCRC32{0UL}; //! sanity crc, in case if good is set to false - Boolean fPacketGood{YES}; - Lba fPacketLba{0UL}; - SizeT fSectorSz{512}; - Boolean fPacketReadOnly{NO}; - } fPacket; - - Lba fLbaStart{0}, fLbaEnd{0}; + VoidPtr fPacketContent{nullptr}; //! packet body. + Char fPacketMime[kDriveNameLen] = "*/*"; //! identify what we're sending. + SizeT fPacketSize{0UL}; //! packet size + UInt32 fPacketCRC32{0UL}; //! sanity crc, in case if good is set to false + Boolean fPacketGood{YES}; + Lba fPacketLba{0UL}; + SizeT fSectorSz{512}; + Boolean fPacketReadOnly{NO}; + } fPacket; + + Lba fLbaStart{0}, fLbaEnd{0}; Void (*fInput)(DrivePacket* packet_ptr); Void (*fOutput)(DrivePacket* packet_ptr); diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc index cccfebfe..e37fcfe0 100644 --- a/dev/Kernel/src/DriveMgr.cc +++ b/dev/Kernel/src/DriveMgr.cc @@ -188,8 +188,8 @@ namespace Kernel kcout << "Formatted Disk is EPM (Mass Storage)\r"; trait.fPacket.fSectorSz = block_struct.SectorSz; - trait.fLbaEnd = block_struct.LbaEnd; - trait.fLbaStart = block_struct.LbaStart; + trait.fLbaEnd = block_struct.LbaEnd; + trait.fLbaStart = block_struct.LbaStart; if (trait.fPacket.fSectorSz == 0) { diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index 531c852e..fa5a1f30 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -60,18 +60,18 @@ STATIC MountpointInterface kMountpoint; /// @param the_fork the fork itself. /// @return the fork /***********************************************************************************/ -_Output BOOL NeFileSystemParser::CreateFork(_Input NFS_FORK_STRUCT& the_fork) +_Output BOOL NeFileSystemParser::CreateFork(_Input NFS_FORK_STRUCT& the_fork) { if (the_fork.ForkName[0] != 0 && - the_fork.CatalogName[0] != 0 && - the_fork.DataSize > 0) + the_fork.CatalogName[0] != 0 && + the_fork.DataSize > 0) { - auto catalog = this->GetCatalog(the_fork.CatalogName); + auto catalog = this->GetCatalog(the_fork.CatalogName); - if (!catalog) - return NO; + if (!catalog) + return NO; - Lba lba = catalog->DataFork; + Lba lba = catalog->DataFork; kcout << "Fork LBA: " << hex_number(lba) << endl; @@ -80,16 +80,16 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NFS_FORK_STRUCT& the_fork) auto drv = kMountpoint.A(); - Lba lbaOfPreviousFork = lba; + Lba lbaOfPreviousFork = lba; - NFS_FORK_STRUCT prevFork; + NFS_FORK_STRUCT prevFork; /// do not check for anything. Loop until we get what we want, that is a free fork zone. while (drv.fPacket.fPacketGood) { - NFS_FORK_STRUCT curFork; + NFS_FORK_STRUCT curFork; - drv.fPacket.fPacketLba = lba; + drv.fPacket.fPacketLba = lba; drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT); drv.fPacket.fPacketContent = &curFork; @@ -142,7 +142,7 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NFS_FORK_STRUCT& the_fork) drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT); drv.fPacket.fPacketContent = &the_fork; - kcout << "Writing fork...\r"; + kcout << "Writing fork...\r"; drv.fOutput(&drv.fPacket); @@ -1031,7 +1031,7 @@ namespace Kernel::NeFS { kcout << "Creating A:\r"; - kMountpoint.A() = io_construct_main_drive(); + kMountpoint.A() = io_construct_main_drive(); kcout << "Creating A: [ OK ]\r"; diff --git a/dev/Kernel/src/Network/IPCMsg.cc b/dev/Kernel/src/Network/IPCMsg.cc index ef57477c..94fb1fc7 100644 --- a/dev/Kernel/src/Network/IPCMsg.cc +++ b/dev/Kernel/src/Network/IPCMsg.cc @@ -61,7 +61,6 @@ namespace Kernel if (!pckt || !ipc_int_sanitize_packet(pckt)) { - UserProcessScheduler::The().GetCurrentProcess().Leak().Crash(); return false; } @@ -77,18 +76,8 @@ namespace Kernel if (!pckt_in) return false; - // don't do anything if it's valid already. - if (*pckt_in) - return true; - - // crash process if the packet pointer of pointer is NULL. - if (!pckt_in) - { - UserProcessScheduler::The().GetCurrentProcess().Leak().Crash(); - return false; - } - - *pckt_in = new IPC_MSG(); + if (!*pckt_in) + *pckt_in = new IPC_MSG(); if (*pckt_in) { @@ -102,8 +91,8 @@ namespace Kernel (*pckt_in)->IpcTo.UserProcessID = 0; (*pckt_in)->IpcTo.UserProcessTeam = 0; - (*pckt_in)->IpcFrom.UserProcessID = Kernel::UserProcessScheduler::The().GetCurrentProcess().Leak().ProcessId; - (*pckt_in)->IpcFrom.UserProcessTeam = Kernel::UserProcessScheduler::The().CurrentTeam().mTeamId; + (*pckt_in)->IpcFrom.UserProcessID = 0; + (*pckt_in)->IpcFrom.UserProcessTeam = 0; return Yes; } -- cgit v1.2.3