summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-09-12 23:40:53 +0000
committerLennart Poettering <lennart@poettering.net>2004-09-12 23:40:53 +0000
commitb1ab6869fbe705f06faa12310c76b7d856030d81 (patch)
treeb3674414f767becdee5e389969620663487c54c7
parentb681622b17e23878cdd0683fdf57dcc35c562c43 (diff)
fix public= on native and esound protocol
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@195 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--doc/todo1
-rw-r--r--polyp/protocol-esound.c8
-rw-r--r--polyp/protocol-native.c17
3 files changed, 18 insertions, 8 deletions
diff --git a/doc/todo b/doc/todo
index f0afd106..f9d9bedc 100644
--- a/doc/todo
+++ b/doc/todo
@@ -21,6 +21,7 @@
- fix public=
- fix POLYP_SERVER=foo:4711
- fix tcp/native
+- suid
** later ***
- xmlrpc/http
diff --git a/polyp/protocol-esound.c b/polyp/protocol-esound.c
index 755ec21d..ee64c484 100644
--- a/polyp/protocol-esound.c
+++ b/polyp/protocol-esound.c
@@ -995,17 +995,23 @@ static void on_connection(struct pa_socket_server*s, struct pa_iochannel *io, vo
struct pa_protocol_esound* pa_protocol_esound_new(struct pa_core*core, struct pa_socket_server *server, struct pa_module *m, struct pa_modargs *ma) {
struct pa_protocol_esound *p;
+ int public;
assert(core && server && ma);
p = pa_xmalloc(sizeof(struct pa_protocol_esound));
+ if (pa_modargs_get_value_boolean(ma, "public", &public) < 0) {
+ pa_log(__FILE__": public= expects a boolean argument.\n");
+ return NULL;
+ }
+
if (pa_authkey_load_auto(pa_modargs_get_value(ma, "cookie", DEFAULT_COOKIE_FILE), p->esd_key, sizeof(p->esd_key)) < 0) {
pa_xfree(p);
return NULL;
}
p->module = m;
- p->public = 0;
+ p->public = public;
p->server = server;
pa_socket_server_set_callback(p->server, on_connection, p);
p->core = core;
diff --git a/polyp/protocol-native.c b/polyp/protocol-native.c
index 3056f7c4..2d26c2f5 100644
--- a/polyp/protocol-native.c
+++ b/polyp/protocol-native.c
@@ -674,14 +674,17 @@ static void command_auth(struct pa_pdispatch *pd, uint32_t command, uint32_t tag
protocol_error(c);
return;
}
+
+ if (!c->authorized) {
+ if (memcmp(c->protocol->auth_cookie, cookie, PA_NATIVE_COOKIE_LENGTH) != 0) {
+ pa_log(__FILE__": Denied access to client with invalid authorization key.\n");
+ pa_pstream_send_error(c->pstream, tag, PA_ERROR_ACCESS);
+ return;
+ }
- if (memcmp(c->protocol->auth_cookie, cookie, PA_NATIVE_COOKIE_LENGTH) != 0) {
- pa_log(__FILE__": Denied access to client with invalid authorization key.\n");
- pa_pstream_send_error(c->pstream, tag, PA_ERROR_ACCESS);
- return;
+ c->authorized = 1;
}
-
- c->authorized = 1;
+
pa_pstream_send_simple_ack(c->pstream, tag);
return;
}
@@ -1547,7 +1550,7 @@ static struct pa_protocol_native* protocol_new_internal(struct pa_core *c, struc
assert(c && ma);
if (pa_modargs_get_value_boolean(ma, "public", &public) < 0) {
- pa_log(__FILE__": public= expects numeric argument.\n");
+ pa_log(__FILE__": public= expects a boolean argument.\n");
return NULL;
}