From d79ded8a44c4f6bcc36ef6c6a5861236345c19d9 Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Mon, 2 Jan 2012 18:30:18 -0500 Subject: [PATCH] Mail: various checks of malloc returns + memory leak fix CID 891. --- src/apps/mail/Content.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/apps/mail/Content.cpp b/src/apps/mail/Content.cpp index 4d76c79487..d8e45c02e4 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;