diff --git a/src/servers/mail/DeskbarView.cpp b/src/servers/mail/DeskbarView.cpp index d52dbc4904..59961f050b 100644 --- a/src/servers/mail/DeskbarView.cpp +++ b/src/servers/mail/DeskbarView.cpp @@ -131,13 +131,16 @@ bool DeskbarView::_EntryInTrash(const entry_ref* entry) BPath trashPath; BPath entryPath(entry); BVolume volume(entry->device); - if (volume.InitCheck() == B_OK) { - find_directory(B_TRASH_DIRECTORY, &trashPath, false, &volume); - if (strncmp(entryPath.Path(), trashPath.Path(), - strlen(trashPath.Path())) == 0) + if (volume.InitCheck() == B_OK + && find_directory(B_TRASH_DIRECTORY, &trashPath, false, + &volume) == B_OK) { + char path[PATH_MAX]; + strncpy(path, trashPath.Path(), sizeof(path)); + strncat(path, "/", sizeof(path)); + if (strncmp(entryPath.Path(), path, strlen(path)) == 0) return true; } - + return false; } @@ -252,7 +255,7 @@ DeskbarView::MessageReceived(BMessage* message) int32 what; dev_t device; ino_t directory; - const char *name; + const char *name; entry_ref ref; message->FindInt32("opcode", &what); message->FindInt32("device", &device); diff --git a/src/servers/mail/main.cpp b/src/servers/mail/main.cpp index 9d59c7bd71..d901c38983 100644 --- a/src/servers/mail/main.cpp +++ b/src/servers/mail/main.cpp @@ -638,10 +638,13 @@ MailDaemonApp::_IsEntryInTrash(BEntry& entry) BPath trashPath; BPath entryPath(&entry); BVolume volume(ref.device); - if (volume.InitCheck() == B_OK) { - find_directory(B_TRASH_DIRECTORY, &trashPath, false, &volume); - if (strncmp(entryPath.Path(), trashPath.Path(), - strlen(trashPath.Path())) == 0) + if (volume.InitCheck() == B_OK + && find_directory(B_TRASH_DIRECTORY, &trashPath, + false, &volume) == B_OK) { + char path[PATH_MAX]; + strncpy(path, trashPath.Path(), sizeof(path)); + strncat(path, "/", sizeof(path)); + if (strncmp(entryPath.Path(), path, strlen(path)) == 0) return true; }