From 405b7f0aaba14135c91be39d76d55dca1c3251bd Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Thu, 3 Jul 2014 17:37:31 +0100 Subject: [PATCH] Don't free here, leads to potential double free. --- src/read_handle_server.c | 4 +--- test/broker/06-bridge-reconnect-local-out.py | 1 + test/broker/08-ssl-connect-no-identity.py | 1 + test/broker/08-tls-psk-bridge.py | 2 ++ test/broker/Makefile | 1 + test/mosq_test.py | 1 + 6 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/read_handle_server.c b/src/read_handle_server.c index 6943f27f..a005ce29 100644 --- a/src/read_handle_server.c +++ b/src/read_handle_server.c @@ -636,9 +636,7 @@ handle_connect_error: #ifdef WITH_TLS if(client_cert) X509_free(client_cert); #endif - if(context){ - mqtt3_context_disconnect(db, context); - } + /* We return an error here which means the client is freed later on. */ return rc; } diff --git a/test/broker/06-bridge-reconnect-local-out.py b/test/broker/06-bridge-reconnect-local-out.py index a9bc3a5d..69244754 100755 --- a/test/broker/06-bridge-reconnect-local-out.py +++ b/test/broker/06-bridge-reconnect-local-out.py @@ -69,6 +69,7 @@ try: rc = 0 sock.close() finally: + time.sleep(1) broker.terminate() broker.wait() if rc: diff --git a/test/broker/08-ssl-connect-no-identity.py b/test/broker/08-ssl-connect-no-identity.py index ecd59520..35b94cb6 100755 --- a/test/broker/08-ssl-connect-no-identity.py +++ b/test/broker/08-ssl-connect-no-identity.py @@ -38,6 +38,7 @@ try: ssock.close() finally: + time.sleep(2) broker.terminate() broker.wait() if rc: diff --git a/test/broker/08-tls-psk-bridge.py b/test/broker/08-tls-psk-bridge.py index ec868e92..5e2c18bf 100755 --- a/test/broker/08-tls-psk-bridge.py +++ b/test/broker/08-tls-psk-bridge.py @@ -62,8 +62,10 @@ try: rc = 0 sock.close() finally: + time.sleep(1) broker.terminate() broker.wait() + time.sleep(1) bridge.terminate() bridge.wait() if rc: diff --git a/test/broker/Makefile b/test/broker/Makefile index d2df7957..7f44af75 100644 --- a/test/broker/Makefile +++ b/test/broker/Makefile @@ -4,6 +4,7 @@ all : clean : + -rm -f *.vglog $(MAKE) -C c clean test-compile : diff --git a/test/mosq_test.py b/test/mosq_test.py index ec6183d6..45ed750e 100644 --- a/test/mosq_test.py +++ b/test/mosq_test.py @@ -25,6 +25,7 @@ def start_broker(filename, cmd=None, port=1888): if c is not None: c.close() + time.sleep(delay) return broker raise IOError