This is a very ugly hack right now but we'll prettify it and make
it all more generic, but right now it'll hotswap the depthblur
in Ark for the one coming from "TheCenter" mod.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Instead of relying on RTLD_NEXT we'll do the correct thing and open a
reference to libc.so.6 and load the `open` function from there, as our
linking order might be janky, causing lookups for `open` to actually fail.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
We're left in the awkward position that there are some games that **still**
misbehave on Linux, and generally do Dumb Things. So to get around the fact
that some vendors basically stopped caring about us, we'll create a special
`LD_PRELOAD` library that is responsible for redirecting syscalls to basically
monkeypatch broken behaviour completely.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This fixes issue #17 by whitelisting the library once more for the main
collection of binaries in the Steam client.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
We currently have a layered block and rewrite system that prevents games
from using vendored SDL, openal, core libs, etc. However the Mono games such
as Stardew Valley will locally load paths using dlopen(), which we've been
blacklisting.
When we now detect a dlopen() to the vendored paths, we'll attempt to rewrite
those to meet the system paths which then forces the dlopen() to resolve to
the system SDL, openAL, etc.
This resolves issue #16.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
As seen in DiRT Rally, the Feral Interactive port is replacing libcurl.so.4,
which is a security sensitive library, known to update against CVEs with
frightening frequency.
Protect our users, and ensure system libcurl is used.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Internally libintercept has a number of magic tricks to prevent games from
replacing the system SDL libraries with vendored ones. However, during testing
with DiRT Rally, it was discovered that Feral Interactive have altered the
sonames of their libraries and linked to those, ensuring they never match
the system versions.
This however will lead to a mixed SDL2 stack for those disabling the Steam
runtime, and in turn forces older builds of SDL to be used. To combat this,
we intercept soname requests during early linking based on a simple pattern,
and if they don't match the expected target name, we'll rewrite the request
in place to force the linker to look for the real soname.
In combination with the existing lsi_blacklist_vendor function, this ensures
that a game looking for `libSDL2-2.0.5.so` will correctly load the system's
own `libSDL2-2.0.so.0`.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This goes some way to satisfy the concerns of issue #15 so that everyone
knows where they stand, how to mitigate this **now**, and what we intend
to do about this in future.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
We often see cases where the vendored openAL library is incapable of HRTF
due to some old or broken openAL version/build, so let's stop games doing
that with the vendor_offender mode.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This allows us to match process names to work modes, so that we'll take one
path for Steam, and allow another path completely for "vendor offenders".
Signed-off-by: Ikey Doherty <ikey@solus-project.com>