summaryrefslogtreecommitdiffstats
path: root/media/mtp/MtpServer.cpp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-07-11 09:18:03 -0400
committerMike Lockwood <lockwood@android.com>2011-07-11 13:40:02 -0400
commit9b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958 (patch)
treef14b7d39ef4012695277173c2c1fb35837af5ea8 /media/mtp/MtpServer.cpp
parentbca946c7a54343f1517347bc74d3fff4e6303d3b (diff)
downloadframeworks_av-9b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958.zip
frameworks_av-9b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958.tar.gz
frameworks_av-9b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958.tar.bz2
MTP: Return error if user tries to copy a file >= 4GB to a FAT32 file system
Bug: 4561836 Change-Id: I2bffb93b032038f6c220c24c752ccd7ca66c23a0 Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp/MtpServer.cpp')
-rw-r--r--media/mtp/MtpServer.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
index bc04e8c..9085f10 100644
--- a/media/mtp/MtpServer.cpp
+++ b/media/mtp/MtpServer.cpp
@@ -871,6 +871,14 @@ MtpResponseCode MtpServer::doSendObjectInfo() {
// check space first
if (mSendObjectFileSize > storage->getFreeSpace())
return MTP_RESPONSE_STORAGE_FULL;
+ uint64_t maxFileSize = storage->getMaxFileSize();
+ // check storage max file size
+ if (maxFileSize != 0) {
+ // if mSendObjectFileSize is 0xFFFFFFFF, then all we know is the file size
+ // is >= 0xFFFFFFFF
+ if (mSendObjectFileSize > maxFileSize || mSendObjectFileSize == 0xFFFFFFFF)
+ return MTP_RESPONSE_OBJECT_TOO_LARGE;
+ }
LOGD("path: %s parent: %d storageID: %08X", (const char*)path, parent, storageID);
MtpObjectHandle handle = mDatabase->beginSendObject((const char*)path,