Opened 10 years ago
Closed 10 years ago
#8337 closed Bugs (fixed)
The internal representation of "std::string(this->code()->message())" escapes, but is destroyed when it exits scope.
Reported by: | Owned by: | viboes | |
---|---|---|---|
Milestone: | Boost 1.54.0 | Component: | thread |
Version: | Boost 1.52.0 | Severity: | Problem |
Keywords: | Cc: |
Description (last modified by )
Coverity static analysis reported the following problem:
class BOOST_SYMBOL_VISIBLE future_error : public std::logic_error { system::error_code ec_; public: future_error(system::error_code ec) : logic_error(ec.message()), ec_(ec) { } const system::error_code& code() const BOOST_NOEXCEPT { return ec_; } const char* what() const BOOST_THREAD_NOEXCEPT_OR_THROW { CID 10932 (#2 of 2): Wrapper object use after free (WRAPPER_ESCAPE)1. escape: The internal representation of "std::string(this->code()->message())" escapes, but is destroyed when it exits scope. return code().message().c_str(); } };
Change History (5)
comment:1 by , 10 years ago
Description: | modified (diff) |
---|---|
Owner: | changed from | to
Status: | new → assigned |
follow-up: 3 comment:2 by , 10 years ago
boost::system::error_code::message returns a temporary string, which is destroyed when the function returns. The pointer returned by what() is dangling.
comment:3 by , 10 years ago
Replying to steven_watanabe:
boost::system::error_code::message returns a temporary string, which is destroyed when the function returns. The pointer returned by what() is dangling.
Oh I see. Please could you try just removing the overriding of the what() function?
Note:
See TracTickets
for help on using tickets.
Could you clarify what is the bug?