Previously, the password would not be cleared after we hashed it with
crypt(), which lead to the password staying in memory for the duration
of program runtime.
This was only really an issue for incorrect passwords, as execve()
purges our memory anyway, but attackers could use an incorrect but
mostly correct password for privilege escalation.
Due to this being a security issue, this commit also introduces rdo
version 1.3.
Fixes#7
This is by far the heaviest feature of rdo, justifying
its own file for its 140loc.
It creates sessions, inspired by the way doas does it.
We use the /run/rdo temporary folder to store files in the
format of /run/rdo/pid-ts, pid being the PID of the process
that executed rdo, and ts being the timestamp at which said
process started.
As no 2 processes can have the exact same PID and startup time
(startup time is measured in the milliseconds), this seems secure.
Closes#4.