1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:28:12 +00:00

DynamicLoader: Make heuristic for running directly actually correct

When we run directly the dynamic loader, we shouldn't rely on the passed
program path to be run, but rather on whether the main program fd number
is not -1, because the kernel will set it to a non-negative number if it
exists.

To test that the heuristic is working correctly, the /usr/lib/Loader.so
file can be copied to /tmp/Loader.so and then be invoked from that path.
This commit is contained in:
Liav A 2023-10-21 13:17:20 +03:00 committed by Andrew Kaster
parent 69b97fe318
commit a8601b4ac7

View file

@ -136,7 +136,7 @@ void _entry(int argc, char** argv, char** envp)
}
}
if (main_program_path == "/usr/lib/Loader.so"sv) {
if (main_program_fd == -1) {
// We've been invoked directly as an executable rather than as the
// ELF interpreter for some other binary. The second argv string should
// be the path to the ELF executable, and if we don't have enough strings in argv