Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[LIBZMQ-450] Copy the stream engine endpoint - string reference cause…

…d memory corruption
  • Loading branch information...
commit fdf162a117782720ed8b7a1cbb71194f0c5136a9 1 parent bef9a41
@methodmissing methodmissing authored
Showing with 5 additions and 3 deletions.
  1. +4 −2 src/stream_engine.cpp
  2. +1 −1  src/stream_engine.hpp
View
6 src/stream_engine.cpp
@@ -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;
View
2  src/stream_engine.hpp
@@ -132,7 +132,7 @@ namespace zmq
options_t options;
// String representation of endpoint
- std::string endpoint;
+ char *endpoint;
bool plugged;
Please sign in to comment.
Something went wrong with that request. Please try again.