diff options
Diffstat (limited to 'ACE/ace/ACE.cpp')
-rw-r--r-- | ACE/ace/ACE.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/ACE/ace/ACE.cpp b/ACE/ace/ACE.cpp index 6328905e882..8418fdf5b92 100644 --- a/ACE/ace/ACE.cpp +++ b/ACE/ace/ACE.cpp @@ -1080,7 +1080,8 @@ ACE::recvv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast<char *> (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<u_long> (n); } } @@ -1792,7 +1793,8 @@ ACE::sendv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast<char *> (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<u_long> (n); } } @@ -1864,7 +1866,8 @@ ACE::sendv_n_i (ACE_HANDLE handle, { char *base = reinterpret_cast<char *> (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<u_long> (n); } } @@ -2106,7 +2109,8 @@ ACE::readv_n (ACE_HANDLE handle, { char *base = reinterpret_cast<char *> (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<u_long> (n); } } @@ -2148,7 +2152,8 @@ ACE::writev_n (ACE_HANDLE handle, { char *base = reinterpret_cast<char *> (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<u_long> (n); } } |