Mail: various checks of malloc returns + memory leak fix

CID 891.
This commit is contained in:
Philippe Saint-Pierre 2012-01-02 18:30:18 -05:00
parent de9c457a38
commit d79ded8a44
1 changed files with 14 additions and 1 deletions

View File

@ -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;