diff options
| author | Tomi Ollila <tomi.ollila@iki.fi> | 2017-03-18 00:28:48 +0200 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2017-03-18 20:59:46 -0300 |
| commit | 06adc276682d1d5f73d78df2e898ad4191eb4499 (patch) | |
| tree | 36bc842d2574b9b1dc34d8d8c3680e9689564605 /lib | |
| parent | eafa8c62b33570cf5f239b08a216b03ea8bf8866 (diff) | |
lib/message.cc: fix Coverity finding (use after free)
The object where pointer to `data` was received was deleted before
it was used in _notmuch_string_list_append().
Relevant Coverity messages follow:
3: extract
Assigning: data = std::__cxx11::string(message->doc.()).c_str(),
which extracts wrapped state from temporary of type std::__cxx11::string.
4: dtor_free
The internal representation of temporary of type std::__cxx11::string
is freed by its destructor.
5: use after free:
Wrapper object use after free (WRAPPER_ESCAPE)
Using internal representation of destroyed object local data.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/message.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/message.cc b/lib/message.cc index 007f1171..36a07a88 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -870,9 +870,9 @@ _notmuch_message_ensure_filename_list (notmuch_message_t *message) * * It would be nice to do the upgrade of the document directly * here, but the database is likely open in read-only mode. */ - const char *data; - data = message->doc.get_data ().c_str (); + std::string datastr = message->doc.get_data (); + const char *data = datastr.c_str (); if (data == NULL) INTERNAL_ERROR ("message with no filename"); |
