summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2025-01-18 03:24:43 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2025-01-18 03:24:43 +0100
commit68a2172e20ebf34098de71464668239d9064eeb8 (patch)
tree61e3545d1c9ea70cc2d6ed453470ec8779248241 /dev/Kernel
parent595a52436c86b4cdc37f26d9562cd55ccdb1a4ec (diff)
Network/IPC: Don't use GetCurrentProcess directly, it might target the wrong process.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/FSKit/NeFS.h2
-rw-r--r--dev/Kernel/KernelKit/DriveMgr.h30
-rw-r--r--dev/Kernel/src/DriveMgr.cc4
-rw-r--r--dev/Kernel/src/FS/NeFS.cc26
-rw-r--r--dev/Kernel/src/Network/IPCMsg.cc19
5 files changed, 35 insertions, 46 deletions
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;
}