Control: reopen -1
Control: found -1 1:45.7.1-2
Control: retitle -1 /usr/bin/thunderbird: $TB_ARGS does not pass multiple args 
correctly

On Thu, 16 Feb 2017 at 16:36:03 -0500, Daniel Kahn Gillmor wrote:
> the special "$@" is getting mangled into the env
> var THUNDERBIRD_OPTIONS which then gets replaced as a single string,
> rather than being passed separately.

This is still the case, except the variable is named TB_ARGS now.

        # every other argument is needed to get down to the TB starting call
        *) TB_ARGS="${TB_ARGS} ${ARG}"
...
    output_debug "call '$MOZ_LIBDIR/$MOZ_APP_NAME ${TB_ARGS}'"
    $MOZ_LIBDIR/$MOZ_APP_NAME "${TB_ARGS}"

Because the thunderbird wrapper is a #!/bin/bash script, you could use
a bash array. $@ is the only variable in a POSIX shell that has special
behaviour similar to bash arrays.

> For example (note the whitespace that should be a _ in the child process 
> below):
> 
> 0 dkg@alice:~$ ps -eFH | grep 'thun[d]er'
> dkg      18921  3185  0  1072  1588   2 16:32 pts/1    00:00:00               
>   /bin/sh /usr/bin/thunderbird -- -P foo
> dkg      18932 18921 17 242031 278836 2 16:32 pts/1    00:00:12               
>     /usr/lib/thunderbird/thunderbird -P foo
> 0 dkg@alice:~$ tr '\0' '_' < /proc/18921/cmdline ; echo
> /bin/sh_/usr/bin/thunderbird_--_-P_foo_
> 0 dkg@alice:~$ tr '\0' '_' < /proc/18932/cmdline ; echo
> /usr/lib/thunderbird/thunderbird_-P foo_

Please test something like this before closing this bug again.
Typing

    /usr/bin/thunderbird -P 'foo bar'

at a shell prompt should result in *two* arguments being passed to
/usr/lib/thunderbird/thunderbird, with content "-P" and "foo bar". One
argument is wrong, three arguments are also wrong.

Regards,
    S

Reply via email to