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.
This commit is contained in:
Tomi Ollila 2017-03-18 00:28:48 +02:00 committed by David Bremner
parent eafa8c62b3
commit 06adc27668

View file

@ -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 * It would be nice to do the upgrade of the document directly
* here, but the database is likely open in read-only mode. */ * 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) if (data == NULL)
INTERNAL_ERROR ("message with no filename"); INTERNAL_ERROR ("message with no filename");