aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomi Ollila <tomi.ollila@iki.fi>2017-03-18 00:28:48 +0200
committerDavid Bremner <david@tethera.net>2017-03-18 20:59:46 -0300
commit06adc276682d1d5f73d78df2e898ad4191eb4499 (patch)
tree36bc842d2574b9b1dc34d8d8c3680e9689564605
parenteafa8c62b33570cf5f239b08a216b03ea8bf8866 (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.
-rw-r--r--lib/message.cc4
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");