mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-13 12:48:20 +00:00
Linux: Don't access file system outside of core
This patch changes the way of how dataspace content is accessed by processes outside of core. Dataspaces are opened by core only and the corresponding file descriptors are handed out the other processes via the 'Linux_dataspace::fd()' RPC function. At the client side, the returned file descriptor is then used to mmap the file. Consequently, this patch eliminates all files from 'lx_rpath'. The path is still needed by core to temporarily create dataspaces and unix domain sockets. However, those files are unlinked immediately after their creation.
This commit is contained in:
@ -24,23 +24,31 @@ namespace Genode {
|
||||
struct Linux_dataspace : Dataspace
|
||||
{
|
||||
enum { FNAME_LEN = 32 };
|
||||
|
||||
struct Filename { char buf[FNAME_LEN]; };
|
||||
|
||||
virtual ~Linux_dataspace() { }
|
||||
|
||||
/**
|
||||
* Request name of file that represents the dataspace on Linux
|
||||
*
|
||||
* This function is used for calling execve on files passed as ROM
|
||||
* dataspaces.
|
||||
*/
|
||||
virtual Filename fname() = 0;
|
||||
|
||||
/**
|
||||
* Request file descriptor of the dataspace
|
||||
*/
|
||||
virtual Untyped_capability fd() = 0;
|
||||
|
||||
/*********************
|
||||
** RPC declaration **
|
||||
*********************/
|
||||
|
||||
|
||||
GENODE_RPC(Rpc_fname, Filename, fname);
|
||||
GENODE_RPC_INTERFACE_INHERIT(Dataspace, Rpc_fname);
|
||||
GENODE_RPC(Rpc_fd, Untyped_capability, fd);
|
||||
GENODE_RPC_INTERFACE_INHERIT(Dataspace, Rpc_fname, Rpc_fd);
|
||||
};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user