summaryrefslogtreecommitdiff
path: root/jackd/clientengine.c
diff options
context:
space:
mode:
authorpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2009-11-13 15:40:45 +0000
committerpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2009-11-13 15:40:45 +0000
commitf5415c352c4be9214a244e639ffdd6ad4b012149 (patch)
tree0eda2d7af242a0226cc6aec1578f5250b0407d6a /jackd/clientengine.c
parent2399e8c181aebcffe8e1562629ff9a088e549b63 (diff)
downloadjack1-f5415c352c4be9214a244e639ffdd6ad4b012149.tar.gz
fix potential crash/memory corruption if client exits before jack_client_open() returns
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3783 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'jackd/clientengine.c')
-rw-r--r--jackd/clientengine.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/jackd/clientengine.c b/jackd/clientengine.c
index 5de971f..4e245ca 100644
--- a/jackd/clientengine.c
+++ b/jackd/clientengine.c
@@ -793,7 +793,10 @@ jack_client_create (jack_engine_t *engine, int client_fd)
if (write (client_fd, &res, sizeof (res)) != sizeof (res)) {
jack_error ("cannot write connection response to client");
- jack_client_delete (engine, client);
+ jack_lock_graph (engine);
+ client->control->dead = 1;
+ jack_remove_client (engine, client);
+ jack_unlock_graph (engine);
return -1;
}