-
Notifications
You must be signed in to change notification settings - Fork 175
Description
The documentation for this method includes:
Unsafety
The caller must ensure that the file is not concurrently modified.
But since the filesystem is shared with other processes that might do anything, this seems very difficult to ensure. (I imagine that an application could be run in a container like Docker to give it a private filesystem?)
So what’s the worst that could happen? https://stackoverflow.com/questions/21286870/how-safe-are-memory-mapped-files-for-reading-input-files seems a bit hand-wavy but suggests: not much.
I’m considering using this method to read (hopefully more efficiently than with File::read
) files that are usually not modified, but they might be modified for example when the system’s package manager updates them to a new version.
I do not mind if reading a byte at the same location twice gives different values, or if reading two locations give inconsistent values (because a write has happened in between the two reads). This might cause my program to unexpectedly return Err
or (safely) panic, but that’s ok.
I do mind if this is Undefined Behavior of the sort that can cause anything to happen, including potentially being exploited for remote code execution or other fun stuff.
If only the former can happen, should this method really be unsafe
?