Bug#954013: evince: Opening external URL failed: blocked by AppArmor: Failed to execute child process /bin/sh

Simon McVittie smcv at debian.org
Fri Mar 27 10:46:30 GMT 2020


On Sun, 15 Mar 2020 at 14:42:48 -0400, Boyuan Yang wrote:
> I am not sure why evince want to use Shell to execute external process. Anyway
> this must be a regression.

This is a regression with GLib 2.64.x. Older versions of glib2.0 use an
external helper program, /usr/libexec/gio-launch-desktop (patched to be
/usr/lib/*/glib-2.0/gio-launch-desktop in Debian), to launch .desktop
files (including URI scheme handlers) with $GIO_LAUNCHED_DESKTOP_FILE_PID
in the environment. Newer versions use /bin/sh -c to implement the helper
as a one-line shell script, using argv and "$@" to avoid shell-injection
vulnerabilities.

This can be resolved without giving evince extra privileges by adding
"/{usr/,}bin/{bash,dash} ixr", which makes the shell inherit the same
security profile as evince itself (so it can't do anything evince couldn't
already do). I'll commit that soon.

    smcv



More information about the pkg-gnome-maintainers mailing list