From 4bfabab005bac62373b80407136b75509b8b57db Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Mon, 29 Dec 2014 09:15:37 -0600 Subject: Check for valid MTP_Storage_ID before adding or removing Attempting to add a storage ID of 0 was causing a seg fault. Change-Id: If8797186405be36ee70dbca63bd1063a62ba2812 --- mtp/mtp_MtpServer.cpp | 14 +++++++++----- partitionmanager.cpp | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mtp/mtp_MtpServer.cpp b/mtp/mtp_MtpServer.cpp index 5f509eb0d..96a1e9453 100755 --- a/mtp/mtp_MtpServer.cpp +++ b/mtp/mtp_MtpServer.cpp @@ -170,11 +170,15 @@ int twmtp_MtpServer::mtppipe_thread(void) if (read_count == sizeof(mtp_message)) { if (mtp_message.message_type == MTP_MESSAGE_ADD_STORAGE) { MTPI("mtppipe add storage %i '%s'\n", mtp_message.storage_id, mtp_message.path); - long reserveSpace = 1; - bool removable = false; - MtpStorage* storage = new MtpStorage(mtp_message.storage_id, mtp_message.path, mtp_message.display, reserveSpace, removable, mtp_message.maxFileSize, refserver); - server->addStorage(storage); - MTPD("mtppipe done adding storage\n"); + if (mtp_message.storage_id) { + long reserveSpace = 1; + bool removable = false; + MtpStorage* storage = new MtpStorage(mtp_message.storage_id, mtp_message.path, mtp_message.display, reserveSpace, removable, mtp_message.maxFileSize, refserver); + server->addStorage(storage); + MTPD("mtppipe done adding storage\n"); + } else { + MTPE("Invalid storage ID %i specified\n", mtp_message.storage_id); + } } else if (mtp_message.message_type == MTP_MESSAGE_REMOVE_STORAGE) { MTPI("mtppipe remove storage %i\n", mtp_message.storage_id); remove_storage(mtp_message.storage_id); diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 003dcd1f3..be6674b88 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -2015,6 +2015,8 @@ bool TWPartitionManager::Add_Remove_MTP_Storage(TWPartition* Part, int message_t } if (Part) { + if (Part->MTP_Storage_ID == 0) + return false; if (message_type == MTP_MESSAGE_REMOVE_STORAGE) { mtp_message.message_type = MTP_MESSAGE_REMOVE_STORAGE; // Remove LOGINFO("sending message to remove %i\n", Part->MTP_Storage_ID); -- cgit v1.2.3