Package: sensible-utils Version: 0.0.9+deb9u1 Severity: normal Tags: patch when environmental variable BROWSER is set to value FOO (and FOO is i /usr/bin/FOO)
$ sensible-browser does execve("/usr/bin/FOO", ["FOO", ""], ...) execve("/usr/bin/FOO", ["FOO", ""], ...) instead of execve("/usr/bin/FOO", ["FOO"], ...) That is, in sh notation, it does $ FOO '' instead of $ FOO In particular, it causes firefox to open with a directory listing of getcwd() instead of its configured start page. I attach two patches: a minimal patch that uses the same solution as the rest of the script (maybe good for security update, to correct the regression introduced by the security update), and a better patch that also allows passing sensible-browser multiple URLs (maybe good for sid). -- System Information: Debian Release: 9.3 APT prefers stable APT policy: (500, 'stable'), (400, 'testing'), (200, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-3-amd64 (SMP w/8 CPU cores) Locale: LANG=fr_LU.UTF-8, LC_CTYPE=fr_LU.UTF-8 (charmap=UTF-8), LANGUAGE=fr_LU.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Init: systemd (via /run/systemd/system) -- no debconf information
--- sensible-utils-0.0.11/sensible-browser 2017-11-15 16:30:02.000000000 +0100 +++ sensible-utils-0.0.11.foo/sensible-browser 2017-12-29 05:38:26.658192505 +0100 @@ -1,13 +1,11 @@ #!/bin/sh -URL="$1" - # Prevent recursive loops, where these values are set to this script p="$(which sensible-browser)" [ "$(which $BROWSER || true)" = "$p" ] && BROWSER= if test -n "$BROWSER"; then - ${BROWSER} "$1" + ${BROWSER} "$@" ret="$?" if [ "$ret" -ne 126 ] && [ "$ret" -ne 127 ]; then exit "$ret" @@ -17,20 +15,20 @@ if test -n "$DISPLAY"; then if test -n "$GNOME_DESKTOP_SESSION_ID"; then if test -x /usr/bin/gnome-www-browser; then - exec /usr/bin/gnome-www-browser ${URL:+"$URL"} + exec /usr/bin/gnome-www-browser "$@" elif test -x /usr/bin/x-www-browser; then - exec /usr/bin/x-www-browser ${URL:+"$URL"} + exec /usr/bin/x-www-browser "$@" elif test -x /usr/bin/gnome-terminal && test -x /usr/bin/www-browser; then - exec /usr/bin/gnome-terminal -e "/usr/bin/www-browser ${URL:+\"$URL\"}" + exec /usr/bin/gnome-terminal -x /usr/bin/www-browser "$@" fi fi if test -x /usr/bin/x-www-browser; then - exec /usr/bin/x-www-browser ${URL:+"$URL"} + exec /usr/bin/x-www-browser "$@" elif test -x /usr/bin/x-terminal-emulator && test -x /usr/bin/www-browser; then - exec /usr/bin/x-terminal-emulator -e /usr/bin/www-browser ${URL:+"$URL"} + exec /usr/bin/x-terminal-emulator -x /usr/bin/www-browser "$@" fi elif test -x /usr/bin/www-browser; then - exec /usr/bin/www-browser ${URL:+"$URL"} + exec /usr/bin/www-browser "$@" fi printf "Couldn't find a suitable web browser!\n" >&2
--- sensible-browser~ 2017-11-15 16:30:02.000000000 +0100 +++ sensible-browser 2017-12-29 05:32:11.183127131 +0100 @@ -7,7 +7,7 @@ [ "$(which $BROWSER || true)" = "$p" ] && BROWSER= if test -n "$BROWSER"; then - ${BROWSER} "$1" + ${BROWSER} ${URL:+"$URL"} ret="$?" if [ "$ret" -ne 126 ] && [ "$ret" -ne 127 ]; then exit "$ret"