diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-01-13 22:15:52 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-01-13 22:15:52 +0100 |
commit | 21cbcc1a8a5900af9e820b10d5c1b28fc803f947 (patch) | |
tree | 18c6cf18e2f96a18cce20936799c3ec1f3e249df | |
parent | 3d6cc026e25ea3015ea989273ba69336a26ab686 (diff) |
client: introduce auto-connect-display= following the scheme of auto-connect-localhost=
Just connecting to a PA server just because X11's $DISPLAY is set might
be a security hole.
-rw-r--r-- | man/pulse-client.conf.5.xml.in | 7 | ||||
-rw-r--r-- | src/pulse/client-conf.c | 4 | ||||
-rw-r--r-- | src/pulse/client-conf.h | 2 | ||||
-rw-r--r-- | src/pulse/client.conf.in | 1 | ||||
-rw-r--r-- | src/pulse/context.c | 12 |
5 files changed, 19 insertions, 7 deletions
diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in index 349b5159..c2a847f3 100644 --- a/man/pulse-client.conf.5.xml.in +++ b/man/pulse-client.conf.5.xml.in @@ -116,6 +116,13 @@ USA. <opt>no</opt>.</p> </option> + <option> + <p><opt>auto-connect-display=</opt> Automatically try to connect + to the host X11's $DISPLAY variable is set to. The same security + issues apply as to <opt>auto-connect-localhost=</opt>. Defaults + to <opt>no</opt>.</p> + </option> + </section> <section name="Authors"> diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c index 6c97802b..18fafe34 100644 --- a/src/pulse/client-conf.c +++ b/src/pulse/client-conf.c @@ -63,7 +63,8 @@ static const pa_client_conf default_conf = { .cookie_file = NULL, .cookie_valid = FALSE, .shm_size = 0, - .auto_connect_localhost = FALSE + .auto_connect_localhost = FALSE, + .auto_connect_display = FALSE }; pa_client_conf *pa_client_conf_new(void) { @@ -107,6 +108,7 @@ int pa_client_conf_load(pa_client_conf *c, const char *filename) { { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL }, { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL }, { "auto-connect-localhost", pa_config_parse_bool, &c->auto_connect_localhost, NULL }, + { "auto-connect-display", pa_config_parse_bool, &c->auto_connect_display, NULL }, { NULL, NULL, NULL, NULL }, }; diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h index 3bca8fdd..f281f4eb 100644 --- a/src/pulse/client-conf.h +++ b/src/pulse/client-conf.h @@ -29,7 +29,7 @@ typedef struct pa_client_conf { char *daemon_binary, *extra_arguments, *default_sink, *default_source, *default_server, *default_dbus_server, *cookie_file; - pa_bool_t autospawn, disable_shm, auto_connect_localhost; + pa_bool_t autospawn, disable_shm, auto_connect_localhost, auto_connect_display; uint8_t cookie[PA_NATIVE_COOKIE_LENGTH]; pa_bool_t cookie_valid; /* non-zero, when cookie is valid */ size_t shm_size; diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in index 090713ec..436747bc 100644 --- a/src/pulse/client.conf.in +++ b/src/pulse/client.conf.in @@ -34,3 +34,4 @@ ; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB ; auto-connect-localhost = no +; auto-connect-display = no diff --git a/src/pulse/context.c b/src/pulse/context.c index 85b90ac7..83e0dbb5 100644 --- a/src/pulse/context.c +++ b/src/pulse/context.c @@ -987,13 +987,15 @@ int pa_context_connect( /* Prepend in reverse order */ /* Follow the X display */ - if ((d = getenv("DISPLAY"))) { - d = pa_xstrndup(d, strcspn(d, ":")); + if (c->conf->auto_connect_display) { + if ((d = getenv("DISPLAY"))) { + d = pa_xstrndup(d, strcspn(d, ":")); - if (*d) - c->server_list = pa_strlist_prepend(c->server_list, d); + if (*d) + c->server_list = pa_strlist_prepend(c->server_list, d); - pa_xfree(d); + pa_xfree(d); + } } /* Add TCP/IP on the localhost */ |