- Direct Execution: execve() directly executes a program, bypassing the shell.
This avoids vulnerabilities like shell injection, which can occur with
system() if user input is not properly sanitized.
- Controlled Environment: With execve(), you can explicitly specify the
environment variables for the new process, providing better control over
the execution context.
- No Shell Overhead: execve() does not invoke a shell, reducing the risk
of unintended behavior caused by shell features or configurations.
- Predictable Behavior: execve() only executes the specified program, whereas
system() relies on the shell, which may interpret commands differently
based on the shell's configuration or environment.
```
CMake Error at CMakeLists.txt:4 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument <min> value. Or, use the <min>...<max> syntax
to tell CMake that the project requires at least <min> but has been updated
to work with policies introduced by <max> or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
```
There's probably a number of other places where the bh_leb_read could be used (e.g. aot loader)
but I'm making the change as small as possible. Further refactoring can be done later.