Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
0.10.0
-
None
-
All
Description
Currently there is widespread use of assert in the thrift C++ runtime library. Some of the more disturbing cases are security related, for example checking header sizes. I recommend we eliminate assertions that are only checked in debug mode, and instead throw the appropriate exception, usually a TTransportException with CORRUPTED_DATA as the reason. If we're going to check for an overflow or a buffer overrun, we should do so in debug and release modes. Further, assertions are not easily tested whereas exceptions are.
In THRIFT-3873 apache::thrift::transport::safe_numeric_cast was added, so I also suggest changing static_cast to safe_numeric_cast where appropriate throughout the transport code to catch any overflow errors.
Another location where assert is used liberally is inside the posix Mutex implementation.
Attachments
Attachments
Issue Links
- relates to
-
THRIFT-3873 Fix various build warnings when using Visual Studio
- Closed
-
THRIFT-4730 Remove pthread and boost::thread library support and use std::thread for C++11
- Closed
- links to