hrev43602 adds 1 changeset to branch 'master' old head: de9c457a3808ddf0cc6794ca1a24dbd2be7e57bb new head: d79ded8a44c4f6bcc36ef6c6a5861236345c19d9 ---------------------------------------------------------------------------- d79ded8: Mail: various checks of malloc returns + memory leak fix CID 891. [ Philippe Saint-Pierre <stpere@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev43602 Commit: d79ded8a44c4f6bcc36ef6c6a5861236345c19d9 URL: http://cgit.haiku-os.org/haiku/commit/?id=d79ded8 Author: Philippe Saint-Pierre <stpere@xxxxxxxxx> Date: Mon Jan 2 23:30:18 2012 UTC ---------------------------------------------------------------------------- 1 files changed, 14 insertions(+), 1 deletions(-) src/apps/mail/Content.cpp | 15 ++++++++++++++- ---------------------------------------------------------------------------- diff --git a/src/apps/mail/Content.cpp b/src/apps/mail/Content.cpp index 4d76c79..d8e45c0 100644 --- a/src/apps/mail/Content.cpp +++ b/src/apps/mail/Content.cpp @@ -716,6 +716,8 @@ TContentView::MessageReceived(BMessage *msg) break; char *signature = (char *)malloc(size); + if (signature == NULL) + break; ssize_t bytesRead = file.Read(signature, size); if (bytesRead < B_OK) { free (signature); @@ -2297,6 +2299,9 @@ TTextView::Reader::ParseMail(BMailContainer *container, return false; hyper_text *enclosure = (hyper_text *)malloc(sizeof(hyper_text)); + if (enclosure == NULL) + return false; + memset(enclosure, 0, sizeof(hyper_text)); enclosure->type = TYPE_ENCLOSURE; @@ -2324,6 +2329,9 @@ TTextView::Reader::ParseMail(BMailContainer *container, count--; } else if (fIncoming) { hyper_text *enclosure = (hyper_text *)malloc(sizeof(hyper_text)); + if (enclosure == NULL) + return false; + memset(enclosure, 0, sizeof(hyper_text)); enclosure->type = TYPE_ENCLOSURE; @@ -2397,13 +2405,18 @@ TTextView::Reader::Process(const char *data, int32 data_len, bool isHeader) count = 0; hyper_text *enclosure = (hyper_text *)malloc(sizeof(hyper_text)); + if (enclosure == NULL) + return false; + memset(enclosure, 0, sizeof(hyper_text)); fView->GetSelection(&enclosure->text_start, &enclosure->text_end); enclosure->type = type; enclosure->name = strdup(url.String()); - if (enclosure->name == NULL) + if (enclosure->name == NULL) { + free(enclosure); return false; + } Insert(&data[loop], urlLength, true, isHeader); enclosure->text_end += urlLength;