Commit 1a18c7b0 authored by Ian Barber's avatar Ian Barber

Merge pull request #473 from methodmissing/fix-engine-endpoint

[LIBZMQ-450] Copy the stream engine endpoint - string reference caused memory corruption
parents bef9a41b fdf162a1
......@@ -63,7 +63,6 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_, cons
greeting_bytes_read (0),
session (NULL),
options (options_),
endpoint (endpoint_),
plugged (false),
socket (NULL)
{
......@@ -96,6 +95,8 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_, cons
int rc = setsockopt (s, SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof (int));
errno_assert (rc == 0);
#endif
endpoint = new char[endpoint_.length() + 1];
strcpy (endpoint, endpoint_.c_str());
}
zmq::stream_engine_t::~stream_engine_t ()
......@@ -117,6 +118,7 @@ zmq::stream_engine_t::~stream_engine_t ()
delete encoder;
if (decoder != NULL)
delete decoder;
delete [] endpoint;
}
void zmq::stream_engine_t::plug (io_thread_t *io_thread_,
......@@ -484,7 +486,7 @@ int zmq::stream_engine_t::push_msg (msg_t *msg_)
void zmq::stream_engine_t::error ()
{
zmq_assert (session);
socket->event_disconnected (endpoint.c_str(), s);
socket->event_disconnected (endpoint, s);
session->detach ();
unplug ();
delete this;
......
......@@ -132,7 +132,7 @@ namespace zmq
options_t options;
// String representation of endpoint
std::string endpoint;
char *endpoint;
bool plugged;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment