From cecd461e0f43e3f78f971f67fe88910320bd0d19 Mon Sep 17 00:00:00 2001 From: Steve Huston Date: Fri, 27 Sep 2013 22:05:25 +0000 Subject: ChangeLogTag:Fri Sep 27 21:33:58 UTC 2013 Steve Huston --- ChangeLog | 13 +++++++++++++ ace/ACE.cpp | 15 ++++++++++----- ace/FILE_IO.cpp | 11 ++++++----- ace/INET_Addr.cpp | 4 +++- ace/Ping_Socket.cpp | 18 +++++++++--------- ace/Process.inl | 3 ++- 6 files changed, 43 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1edebb37222..6f82c03e4ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Fri Sep 27 21:33:58 UTC 2013 Steve Huston + + * ace/ACE.cpp: Same fix as Thu Sep 26 20:22:53 made to recvv_n_i(), + sendv_n_i(), readv_n(), writev_n(). + + * ace/FILE_IO.cpp (recvv): Resolve 64-bit compile warnings and ensure + that no more is read than can be accurately reported. + + * ace/INET_Addr.cpp (set): + * ace/Ping_Socket.cpp: + * ace/Process.inl (command_line_buff): + Resolve 64-bit compile warning on Windows. + Thu Sep 26 20:22:53 UTC 2013 Steve Huston * ace/ACE.cpp (recvv_n_i): Resolve 64-bit compile warning on Windows. diff --git a/ace/ACE.cpp b/ace/ACE.cpp index 75384682cdd..8dd488753b4 100644 --- a/ace/ACE.cpp +++ b/ace/ACE.cpp @@ -1080,7 +1080,8 @@ ACE::recvv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast (iov[s].iov_base); iov[s].iov_base = base + n; - iov[s].iov_len = iov[s].iov_len - n; + // This blind cast is safe because n < iov_len, after above loop. + iov[s].iov_len = iov[s].iov_len - static_cast (n); } } @@ -1792,7 +1793,8 @@ ACE::sendv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast (iov[s].iov_base); iov[s].iov_base = base + n; - iov[s].iov_len = iov[s].iov_len - n; + // This blind cast is safe because n < iov_len, after above loop. + iov[s].iov_len = iov[s].iov_len - static_cast (n); } } @@ -1864,7 +1866,8 @@ ACE::sendv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast (iov[s].iov_base); iov[s].iov_base = base + n; - iov[s].iov_len = iov[s].iov_len - n; + // This blind cast is safe because n < iov_len, after above loop. + iov[s].iov_len = iov[s].iov_len - static_cast (n); } } @@ -2106,7 +2109,8 @@ ACE::readv_n (ACE_HANDLE handle, { char *base = reinterpret_cast (iov[s].iov_base); iov[s].iov_base = base + n; - iov[s].iov_len = iov[s].iov_len - n; + // This blind cast is safe because n < iov_len, after above loop. + iov[s].iov_len = iov[s].iov_len - static_cast (n); } } @@ -2148,7 +2152,8 @@ ACE::writev_n (ACE_HANDLE handle, { char *base = reinterpret_cast (iov[s].iov_base); iov[s].iov_base = base + n; - iov[s].iov_len = iov[s].iov_len - n; + // This blind cast is safe because n < iov_len, after above loop. + iov[s].iov_len = iov[s].iov_len - static_cast (n); } } diff --git a/ace/FILE_IO.cpp b/ace/FILE_IO.cpp index d8890eecb68..2f799268ebb 100644 --- a/ace/FILE_IO.cpp +++ b/ace/FILE_IO.cpp @@ -124,16 +124,17 @@ ACE_FILE_IO::recvv (iovec *io_vec) ACE_TRACE ("ACE_FILE_IO::recvv"); io_vec->iov_base = 0; - size_t const length = - static_cast (ACE_OS::filesize (this->get_handle ())); + ACE_OFF_T const length = ACE_OS::filesize (this->get_handle ()); if (length > 0) { + // Restrict to max size we can record in iov_len. + size_t len = ACE_Utils::truncate_cast (length); ACE_NEW_RETURN (io_vec->iov_base, - char[length], + char[len], -1); - io_vec->iov_len = this->recv_n (io_vec->iov_base, - length); + io_vec->iov_len = static_cast (this->recv_n (io_vec->iov_base, + len)); return io_vec->iov_len; } else diff --git a/ace/INET_Addr.cpp b/ace/INET_Addr.cpp index 55ee6917181..ad2e54eeada 100644 --- a/ace/INET_Addr.cpp +++ b/ace/INET_Addr.cpp @@ -17,6 +17,7 @@ #include "ace/OS_NS_netdb.h" #include "ace/OS_NS_unistd.h" #include "ace/OS_NS_sys_socket.h" +#include "ace/Truncate.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -379,7 +380,8 @@ ACE_INET_Addr::set (u_short port_number, if ((error = ::getaddrinfo (host_name, 0, &hints, &res)) == 0) { this->set_type (res->ai_family); - this->set_addr (res->ai_addr, res->ai_addrlen); + this->set_addr (res->ai_addr, + ACE_Utils::truncate_cast(res->ai_addrlen)); this->set_port_number (port_number, encode); ::freeaddrinfo (res); return 0; diff --git a/ace/Ping_Socket.cpp b/ace/Ping_Socket.cpp index 400b53b6c81..12d9e8e2c1c 100644 --- a/ace/Ping_Socket.cpp +++ b/ace/Ping_Socket.cpp @@ -154,10 +154,10 @@ ACE_Ping_Socket::receive_echo_reply (ACE_Time_Value const * timeout) do { - int rval_recv = inherited::recv (icmp_recv_buff_, - sizeof icmp_recv_buff_, - 0, - wait_time); + ssize_t rval_recv = inherited::recv (icmp_recv_buff_, + sizeof icmp_recv_buff_, + 0, + wait_time); if (rval_recv < 0) { if (errno == EINTR) @@ -203,7 +203,7 @@ int ACE_Ping_Socket::process_incoming_dgram (char * ptr, ssize_t len) { unsigned char hlen1; - int icmplen; + ssize_t icmplen; struct ip * ip; struct icmp * icmp; @@ -224,7 +224,7 @@ ACE_Ping_Socket::process_incoming_dgram (char * ptr, ssize_t len) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) ACE_Ping_Socket::process_incoming_dgram") - ACE_TEXT (" - ICMP length is %d < 8.\n"), + ACE_TEXT (" - ICMP length is %b < 8.\n"), icmplen)); ACE_ERROR_RETURN ((LM_ERROR, @@ -257,7 +257,7 @@ ACE_Ping_Socket::process_incoming_dgram (char * ptr, ssize_t len) ((LM_ERROR, ACE_TEXT ("(%P|%t) ACE_Ping_Socket::") ACE_TEXT ("process_incoming_dgram - ICMP length ") - ACE_TEXT ("is %d < 16."), + ACE_TEXT ("is %b < 16."), icmplen), -1); } @@ -266,7 +266,7 @@ ACE_Ping_Socket::process_incoming_dgram (char * ptr, ssize_t len) ((LM_DEBUG, ACE_TEXT ("(%P|%t) ACE::Ping_Socket::process_incoming_dgram - ") ACE_TEXT ("received ") - ACE_TEXT ("ICMP datagram with length of %d bytes (not counting ") + ACE_TEXT ("ICMP datagram with length of %b bytes (not counting ") ACE_TEXT ("IP-header): seq=%u, ttl=%d.\n"), icmplen, icmp->icmp_seq, ip->ip_ttl)); @@ -335,7 +335,7 @@ ACE_Ping_Socket::send_echo_check (ACE_INET_Addr &remote_addr, _icmp->icmp_cksum = 0; _icmp->icmp_cksum = inherited::calculate_checksum ((u_short *) _icmp, length_icmp); - int rval_send = -1; + ssize_t rval_send = -1; if ((rval_send = send ((void const *) icmp_send_buff_, length_icmp, diff --git a/ace/Process.inl b/ace/Process.inl index e77db92f5bc..c04ef8b3f87 100644 --- a/ace/Process.inl +++ b/ace/Process.inl @@ -7,6 +7,7 @@ #include "ace/OS_NS_signal.h" #include "ace/OS_NS_pwd.h" #include "ace/OS_NS_string.h" +#include "ace/Truncate.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -330,7 +331,7 @@ ACE_INLINE ACE_TCHAR * ACE_Process_Options::command_line_buf (int *max_lenp) { if (max_lenp != 0) - *max_lenp = this->command_line_buf_len_; + *max_lenp = ACE_Utils::truncate_cast(this->command_line_buf_len_); return this->command_line_buf_; } -- cgit v1.2.1