Commit dbacc342 authored by Pieter Hintjens's avatar Pieter Hintjens

Merge pull request #1379 from evoskuil/master

Problem: integer narrowing issues.
parents cd830dd2 30bd7c48
...@@ -96,7 +96,7 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, ...@@ -96,7 +96,7 @@ int zmq::options_t::setsockopt (int option_, const void *optval_,
case ZMQ_IDENTITY: case ZMQ_IDENTITY:
// Identity is any binary string from 1 to 255 octets // Identity is any binary string from 1 to 255 octets
if (optvallen_ > 0 && optvallen_ < 256) { if (optvallen_ > 0 && optvallen_ < 256) {
identity_size = optvallen_; identity_size = (unsigned char) optvallen_;
memcpy (identity, optval_, identity_size); memcpy (identity, optval_, identity_size);
return 0; return 0;
} }
......
...@@ -265,7 +265,7 @@ int zmq::plain_server_t::produce_error (msg_t *msg_) const ...@@ -265,7 +265,7 @@ int zmq::plain_server_t::produce_error (msg_t *msg_) const
zmq_assert (rc == 0); zmq_assert (rc == 0);
char *msg_data = static_cast <char *> (msg_->data ()); char *msg_data = static_cast <char *> (msg_->data ());
memcpy (msg_data, "\5ERROR", 6); memcpy (msg_data, "\5ERROR", 6);
msg_data [6] = status_code.length (); msg_data [6] = (char) status_code.length ();
memcpy (msg_data + 7, status_code.c_str (), status_code.length ()); memcpy (msg_data + 7, status_code.c_str (), status_code.length ());
return 0; return 0;
} }
......
...@@ -37,12 +37,10 @@ zmq::socks_greeting_t::socks_greeting_t (uint8_t method_) : ...@@ -37,12 +37,10 @@ zmq::socks_greeting_t::socks_greeting_t (uint8_t method_) :
} }
zmq::socks_greeting_t::socks_greeting_t ( zmq::socks_greeting_t::socks_greeting_t (
uint8_t *methods_, size_t num_methods_) uint8_t *methods_, uint8_t num_methods_)
: num_methods (num_methods_) : num_methods (num_methods_)
{ {
zmq_assert (num_methods_ <= 255); for (uint8_t i = 0; i < num_methods_; i++)
for (size_t i = 0; i < num_methods_; i++)
methods [i] = methods_ [i]; methods [i] = methods_ [i];
} }
...@@ -55,8 +53,8 @@ void zmq::socks_greeting_encoder_t::encode (const socks_greeting_t &greeting_) ...@@ -55,8 +53,8 @@ void zmq::socks_greeting_encoder_t::encode (const socks_greeting_t &greeting_)
uint8_t *ptr = buf; uint8_t *ptr = buf;
*ptr++ = 0x05; *ptr++ = 0x05;
*ptr++ = greeting_.num_methods; *ptr++ = (uint8_t) greeting_.num_methods;
for (size_t i = 0; i < greeting_.num_methods; i++) for (uint8_t i = 0; i < greeting_.num_methods; i++)
*ptr++ = greeting_.methods [i]; *ptr++ = greeting_.methods [i];
bytes_encoded = 2 + greeting_.num_methods; bytes_encoded = 2 + greeting_.num_methods;
...@@ -118,10 +116,13 @@ void zmq::socks_choice_decoder_t::reset () ...@@ -118,10 +116,13 @@ void zmq::socks_choice_decoder_t::reset ()
bytes_read = 0; bytes_read = 0;
} }
zmq::socks_request_t::socks_request_t ( zmq::socks_request_t::socks_request_t (
uint8_t command_, std::string hostname_, uint16_t port_) uint8_t command_, std::string hostname_, uint16_t port_)
: command (command_), hostname (hostname_), port (port_) : command (command_), hostname (hostname_), port (port_)
{} {
zmq_assert (hostname_.size () <= UINT8_MAX);
}
zmq::socks_request_encoder_t::socks_request_encoder_t () zmq::socks_request_encoder_t::socks_request_encoder_t ()
: bytes_encoded (0), bytes_written (0) : bytes_encoded (0), bytes_written (0)
...@@ -129,6 +130,8 @@ zmq::socks_request_encoder_t::socks_request_encoder_t () ...@@ -129,6 +130,8 @@ zmq::socks_request_encoder_t::socks_request_encoder_t ()
void zmq::socks_request_encoder_t::encode (const socks_request_t &req) void zmq::socks_request_encoder_t::encode (const socks_request_t &req)
{ {
zmq_assert (req.hostname.size() <= UINT8_MAX);
unsigned char *ptr = buf; unsigned char *ptr = buf;
*ptr++ = 0x05; *ptr++ = 0x05;
*ptr++ = req.command; *ptr++ = req.command;
...@@ -163,7 +166,7 @@ void zmq::socks_request_encoder_t::encode (const socks_request_t &req) ...@@ -163,7 +166,7 @@ void zmq::socks_request_encoder_t::encode (const socks_request_t &req)
} }
else { else {
*ptr++ = 0x03; *ptr++ = 0x03;
*ptr++ = req.hostname.size (); *ptr++ = (unsigned char) req.hostname.size ();
memcpy (ptr, req.hostname.c_str (), req.hostname.size ()); memcpy (ptr, req.hostname.c_str (), req.hostname.size ());
ptr += req.hostname.size (); ptr += req.hostname.size ();
} }
......
...@@ -30,9 +30,9 @@ namespace zmq ...@@ -30,9 +30,9 @@ namespace zmq
struct socks_greeting_t struct socks_greeting_t
{ {
socks_greeting_t (uint8_t method); socks_greeting_t (uint8_t method);
socks_greeting_t (uint8_t *methods_, size_t num_methods_); socks_greeting_t (uint8_t *methods_, uint8_t num_methods_);
uint8_t methods [255]; uint8_t methods [UINT8_MAX];
const size_t num_methods; const size_t num_methods;
}; };
...@@ -48,7 +48,7 @@ namespace zmq ...@@ -48,7 +48,7 @@ namespace zmq
private: private:
size_t bytes_encoded; size_t bytes_encoded;
size_t bytes_written; size_t bytes_written;
uint8_t buf [2 + 255]; uint8_t buf [2 + UINT8_MAX];
}; };
struct socks_choice_t struct socks_choice_t
...@@ -94,7 +94,7 @@ namespace zmq ...@@ -94,7 +94,7 @@ namespace zmq
private: private:
size_t bytes_encoded; size_t bytes_encoded;
size_t bytes_written; size_t bytes_written;
uint8_t buf [4 + 256 + 2]; uint8_t buf [4 + UINT8_MAX + 1 + 2];
}; };
struct socks_response_t struct socks_response_t
...@@ -116,7 +116,7 @@ namespace zmq ...@@ -116,7 +116,7 @@ namespace zmq
void reset (); void reset ();
private: private:
uint8_t buf [4 + 256 + 2]; int8_t buf [4 + UINT8_MAX + 1 + 2];
size_t bytes_read; size_t bytes_read;
}; };
......
...@@ -148,7 +148,7 @@ void zmq::socks_connecter_t::in_event () ...@@ -148,7 +148,7 @@ void zmq::socks_connecter_t::in_event ()
// Attach the engine to the corresponding session object. // Attach the engine to the corresponding session object.
send_attach (session, engine); send_attach (session, engine);
socket->event_connected (endpoint, s); socket->event_connected (endpoint, (int) s);
rm_fd (handle); rm_fd (handle);
s = -1; s = -1;
...@@ -170,7 +170,7 @@ void zmq::socks_connecter_t::out_event () ...@@ -170,7 +170,7 @@ void zmq::socks_connecter_t::out_event ()
|| status == sending_request); || status == sending_request);
if (status == waiting_for_proxy_connection) { if (status == waiting_for_proxy_connection) {
const int rc = check_proxy_connection (); const int rc = (int) check_proxy_connection ();
if (rc == -1) if (rc == -1)
error (); error ();
else { else {
...@@ -436,7 +436,7 @@ void zmq::socks_connecter_t::close () ...@@ -436,7 +436,7 @@ void zmq::socks_connecter_t::close ()
const int rc = ::close (s); const int rc = ::close (s);
errno_assert (rc == 0); errno_assert (rc == 0);
#endif #endif
socket->event_closed (endpoint, s); socket->event_closed (endpoint, (int) s);
s = retired_fd; s = retired_fd;
} }
......
...@@ -59,4 +59,8 @@ typedef unsigned __int64 uint64_t; ...@@ -59,4 +59,8 @@ typedef unsigned __int64 uint64_t;
#endif #endif
#ifndef UINT8_MAX
#define UINT8_MAX 0xFF
#endif
#endif #endif
...@@ -289,14 +289,13 @@ void zmq::stream_t::identify_peer (pipe_t *pipe_) ...@@ -289,14 +289,13 @@ void zmq::stream_t::identify_peer (pipe_t *pipe_)
connect_rid.length ()); connect_rid.length ());
connect_rid.clear (); connect_rid.clear ();
outpipes_t::iterator it = outpipes.find (identity); outpipes_t::iterator it = outpipes.find (identity);
if (it != outpipes.end ()) zmq_assert (it == outpipes.end ());
zmq_assert(false);
} }
else { else {
put_uint32 (buffer + 1, next_rid++); put_uint32 (buffer + 1, next_rid++);
identity = blob_t (buffer, sizeof buffer); identity = blob_t (buffer, sizeof buffer);
memcpy (options.identity, identity.data (), identity.size ()); memcpy (options.identity, identity.data (), identity.size ());
options.identity_size = identity.size (); options.identity_size = (unsigned char) identity.size ();
} }
pipe_->set_identity (identity); pipe_->set_identity (identity);
// Add the record into output pipes lookup table // Add the record into output pipes lookup table
......
...@@ -928,7 +928,7 @@ void zmq::stream_engine_t::error (error_reason_t reason) ...@@ -928,7 +928,7 @@ void zmq::stream_engine_t::error (error_reason_t reason)
terminator.close(); terminator.close();
} }
zmq_assert (session); zmq_assert (session);
socket->event_disconnected (endpoint, s); socket->event_disconnected (endpoint, (int) s);
session->flush (); session->flush ();
session->engine_error (reason); session->engine_error (reason);
unplug (); unplug ();
......
...@@ -138,7 +138,7 @@ void zmq::tcp_connecter_t::out_event () ...@@ -138,7 +138,7 @@ void zmq::tcp_connecter_t::out_event ()
// Shut the connecter down. // Shut the connecter down.
terminate (); terminate ();
socket->event_connected (endpoint, fd); socket->event_connected (endpoint, (int) fd);
} }
void zmq::tcp_connecter_t::timer_event (int id_) void zmq::tcp_connecter_t::timer_event (int id_)
...@@ -352,6 +352,6 @@ void zmq::tcp_connecter_t::close () ...@@ -352,6 +352,6 @@ void zmq::tcp_connecter_t::close ()
const int rc = ::close (s); const int rc = ::close (s);
errno_assert (rc == 0); errno_assert (rc == 0);
#endif #endif
socket->event_closed (endpoint, s); socket->event_closed (endpoint, (int) s);
s = retired_fd; s = retired_fd;
} }
...@@ -111,7 +111,7 @@ void zmq::tcp_listener_t::in_event () ...@@ -111,7 +111,7 @@ void zmq::tcp_listener_t::in_event ()
session->inc_seqnum (); session->inc_seqnum ();
launch_child (session); launch_child (session);
send_attach (session, engine, false); send_attach (session, engine, false);
socket->event_accepted (endpoint, fd); socket->event_accepted (endpoint, (int) fd);
} }
void zmq::tcp_listener_t::close () void zmq::tcp_listener_t::close ()
...@@ -124,7 +124,7 @@ void zmq::tcp_listener_t::close () ...@@ -124,7 +124,7 @@ void zmq::tcp_listener_t::close ()
int rc = ::close (s); int rc = ::close (s);
errno_assert (rc == 0); errno_assert (rc == 0);
#endif #endif
socket->event_closed (endpoint, s); socket->event_closed (endpoint, (int) s);
s = retired_fd; s = retired_fd;
} }
...@@ -239,7 +239,7 @@ int zmq::tcp_listener_t::set_address (const char *addr_) ...@@ -239,7 +239,7 @@ int zmq::tcp_listener_t::set_address (const char *addr_)
goto error; goto error;
#endif #endif
socket->event_listening (endpoint, s); socket->event_listening (endpoint, (int) s);
return 0; return 0;
error: error:
......
...@@ -155,7 +155,7 @@ uint8_t *zmq_z85_decode (uint8_t *dest, const char *string) ...@@ -155,7 +155,7 @@ uint8_t *zmq_z85_decode (uint8_t *dest, const char *string)
} }
unsigned int byte_nbr = 0; unsigned int byte_nbr = 0;
unsigned int char_nbr = 0; unsigned int char_nbr = 0;
unsigned int string_len = strlen (string); size_t string_len = strlen (string);
uint32_t value = 0; uint32_t value = 0;
while (char_nbr < string_len) { while (char_nbr < string_len) {
// Accumulate value in base 85 // Accumulate value in base 85
......
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