Commit 3e5b148d authored by Chengwei Yang's avatar Chengwei Yang Committed by Simon McVittie

Set argv[0] to dbus-launch to avoid misleading info from /proc

At previous, argv[0] is the full-qualified path of program, however, if
start dbus-launch failed, it will fall back to find one from $PATH,
while keep the argv[0] as the full-qualified path. So we'll get
misleading info from /proc or ps(1) about dbus-launch process.

One simple solution is just hard-code argv[0] to dbus-launch.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=69716
Reviewed-by: Simon McVittie
parent 9383a022
......@@ -3494,6 +3494,7 @@ _dbus_get_autolaunch_address (const char *scope,
* but that's done elsewhere, and if it worked, this function wouldn't
* be called.) */
const char *display;
char *progpath;
char *argv[6];
int i;
DBusString uuid;
......@@ -3533,13 +3534,19 @@ _dbus_get_autolaunch_address (const char *scope,
goto out;
}
i = 0;
#ifdef DBUS_ENABLE_EMBEDDED_TESTS
if (_dbus_getenv ("DBUS_USE_TEST_BINARY") != NULL)
argv[i] = TEST_BUS_LAUNCH_BINARY;
progpath = TEST_BUS_LAUNCH_BINARY;
else
#endif
argv[i] = DBUS_BINDIR "/dbus-launch";
progpath = DBUS_BINDIR "/dbus-launch";
/*
* argv[0] is always dbus-launch, that's the name what we'll
* get from /proc, or ps(1), regardless what the progpath is,
* see fd.o#69716
*/
i = 0;
argv[i] = "dbus-launch";
++i;
argv[i] = "--autolaunch";
++i;
......@@ -3554,7 +3561,7 @@ _dbus_get_autolaunch_address (const char *scope,
_dbus_assert (i == _DBUS_N_ELEMENTS (argv));
retval = _read_subprocess_line_argv (argv[0],
retval = _read_subprocess_line_argv (progpath,
TRUE,
argv, address, error);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment