]> code.delx.au - pulseaudio/commitdiff
fix public= on native and esound protocol
authorLennart Poettering <lennart@poettering.net>
Sun, 12 Sep 2004 23:40:53 +0000 (23:40 +0000)
committerLennart Poettering <lennart@poettering.net>
Sun, 12 Sep 2004 23:40:53 +0000 (23:40 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@195 fefdeb5f-60dc-0310-8127-8f9354f1896f

doc/todo
polyp/protocol-esound.c
polyp/protocol-native.c

index f0afd106edb550ebd3d70a646bb65e3c99612493..f9d9bedc3e13fdcf74c05bf28b2770b29b235e72 100644 (file)
--- a/doc/todo
+++ b/doc/todo
@@ -21,6 +21,7 @@
 - fix public=
 - fix POLYP_SERVER=foo:4711
 - fix tcp/native
+- suid
 
 ** later ***
 - xmlrpc/http
index 755ec21d42265d0eb2154a02d2de3d0095f119a6..ee64c48499d577d2a6659fc3c18bb0a7d60d6bfc 100644 (file)
@@ -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;
index 3056f7c4518892188ba9504e1196f118d5fa279f..2d26c2f53bca40e245dfaca5675717eb0db4d48b 100644 (file)
@@ -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;
     }