Merge changes I1c50546e,I8254cb6b,Ib179299a,Iec1c2801
* changes:
EncryptInplace: Rename variable
Checkpoint: Assure proper buffer alignment
vold: Pass std::string by const reference
vold: const-ify some of the API
diff --git a/Checkpoint.cpp b/Checkpoint.cpp
index ce0d00c..28855e6 100644
--- a/Checkpoint.cpp
+++ b/Checkpoint.cpp
@@ -296,9 +296,9 @@
PLOG(ERROR) << "Cannot open " << blockDevice;
return Status::fromExceptionCode(errno, ("Cannot open " + blockDevice).c_str());
}
- char buffer[kBlockSize];
- device.read(buffer, kBlockSize);
- log_sector& ls = *(log_sector*)buffer;
+ alignas(alignof(log_sector)) char ls_buffer[kBlockSize];
+ device.read(ls_buffer, kBlockSize);
+ log_sector& ls = *reinterpret_cast<log_sector*>(ls_buffer);
if (ls.magic != kMagic) {
LOG(ERROR) << "No magic";
return Status::fromExceptionCode(EINVAL, "No magic");
@@ -307,10 +307,9 @@
LOG(INFO) << "Restoring " << ls.sequence << " log sectors";
for (int sequence = ls.sequence; sequence >= 0; sequence--) {
- char buffer[kBlockSize];
device.seekg(0);
- device.read(buffer, kBlockSize);
- log_sector& ls = *(log_sector*)buffer;
+ device.read(ls_buffer, kBlockSize);
+ ls = *reinterpret_cast<log_sector*>(ls_buffer);
if (ls.magic != kMagic) {
LOG(ERROR) << "No magic!";
return Status::fromExceptionCode(EINVAL, "No magic");
diff --git a/EncryptInplace.cpp b/EncryptInplace.cpp
index d559bff..f55932d 100644
--- a/EncryptInplace.cpp
+++ b/EncryptInplace.cpp
@@ -524,11 +524,11 @@
for (i /= CRYPT_SECTORS_PER_BUFSIZE; i < numblocks; i++) {
new_pct = (i + blocks_already_done) / one_pct;
if (set_progress_properties && new_pct > cur_pct) {
- char buf[8];
+ char property_buf[8];
cur_pct = new_pct;
- snprintf(buf, sizeof(buf), "%" PRId64, cur_pct);
- android::base::SetProperty("vold.encrypt_progress", buf);
+ snprintf(property_buf, sizeof(property_buf), "%" PRId64, cur_pct);
+ android::base::SetProperty("vold.encrypt_progress", property_buf);
}
if (unix_read(realfd, buf, CRYPT_INPLACE_BUFSIZE) <= 0) {
PLOG(ERROR) << "Error reading real_blkdev " << real_blkdev << " for inplace encrypt";
diff --git a/KeyStorage.h b/KeyStorage.h
index 6aaf3ad..276b6b9 100644
--- a/KeyStorage.h
+++ b/KeyStorage.h
@@ -31,7 +31,7 @@
// If only "secret" is nonempty, it is used to decrypt in a non-Keymaster process.
class KeyAuthentication {
public:
- KeyAuthentication(std::string t, std::string s) : token{t}, secret{s} {};
+ KeyAuthentication(const std::string& t, const std::string& s) : token{t}, secret{s} {};
bool usesKeymaster() const { return !token.empty() || secret.empty(); };
diff --git a/Keymaster.h b/Keymaster.h
index fabe0f4..42a2b5d 100644
--- a/Keymaster.h
+++ b/Keymaster.h
@@ -46,8 +46,8 @@
~KeymasterOperation();
// Is this instance valid? This is false if creation fails, and becomes
// false on finish or if an update fails.
- explicit operator bool() { return mError == km::ErrorCode::OK; }
- km::ErrorCode errorCode() { return mError; }
+ explicit operator bool() const { return mError == km::ErrorCode::OK; }
+ km::ErrorCode errorCode() const { return mError; }
// Call "update" repeatedly until all of the input is consumed, and
// concatenate the output. Return true on success.
template <class TI, class TO>
diff --git a/MetadataCrypt.cpp b/MetadataCrypt.cpp
index 8b4d04e..5c8a075 100644
--- a/MetadataCrypt.cpp
+++ b/MetadataCrypt.cpp
@@ -84,7 +84,7 @@
// Note: It is possible to orphan a key if it is removed before deleting
// Update this once keymaster APIs change, and we have a proper commit.
-static void commit_key(std::string dir) {
+static void commit_key(const std::string& dir) {
while (!android::base::WaitForProperty("vold.checkpoint_committed", "1")) {
LOG(ERROR) << "Wait for boot timed out";
}
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 45dd591..ce2d935 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -319,7 +319,8 @@
return nullptr;
}
-void VolumeManager::listVolumes(android::vold::VolumeBase::Type type, std::list<std::string>& list) {
+void VolumeManager::listVolumes(android::vold::VolumeBase::Type type,
+ std::list<std::string>& list) const {
list.clear();
for (const auto& disk : mDisks) {
disk->listVolumes(type, list);
diff --git a/VolumeManager.h b/VolumeManager.h
index 9227819..e0a1bd6 100644
--- a/VolumeManager.h
+++ b/VolumeManager.h
@@ -52,7 +52,7 @@
std::mutex& getCryptLock() { return mCryptLock; }
void setListener(android::sp<android::os::IVoldListener> listener) { mListener = listener; }
- android::sp<android::os::IVoldListener> getListener() { return mListener; }
+ android::sp<android::os::IVoldListener> getListener() const { return mListener; }
int start();
int stop();
@@ -68,8 +68,8 @@
return !fnmatch(mSysPattern.c_str(), sysPath.c_str(), 0);
}
- const std::string& getNickname() { return mNickname; }
- int getFlags() { return mFlags; }
+ const std::string& getNickname() const { return mNickname; }
+ int getFlags() const { return mFlags; }
private:
std::string mSysPattern;
@@ -82,7 +82,7 @@
std::shared_ptr<android::vold::Disk> findDisk(const std::string& id);
std::shared_ptr<android::vold::VolumeBase> findVolume(const std::string& id);
- void listVolumes(android::vold::VolumeBase::Type type, std::list<std::string>& list);
+ void listVolumes(android::vold::VolumeBase::Type type, std::list<std::string>& list) const;
int forgetPartition(const std::string& partGuid, const std::string& fsUuid);
diff --git a/model/Disk.cpp b/model/Disk.cpp
index 1568ba4..b66c336 100644
--- a/model/Disk.cpp
+++ b/model/Disk.cpp
@@ -153,7 +153,7 @@
return nullptr;
}
-void Disk::listVolumes(VolumeBase::Type type, std::list<std::string>& list) {
+void Disk::listVolumes(VolumeBase::Type type, std::list<std::string>& list) const {
for (const auto& vol : mVolumes) {
if (vol->getType() == type) {
list.push_back(vol->getId());
diff --git a/model/Disk.h b/model/Disk.h
index 3140144..889e906 100644
--- a/model/Disk.h
+++ b/model/Disk.h
@@ -54,18 +54,18 @@
kEmmc = 1 << 4,
};
- const std::string& getId() { return mId; }
- const std::string& getEventPath() { return mEventPath; }
- const std::string& getSysPath() { return mSysPath; }
- const std::string& getDevPath() { return mDevPath; }
- dev_t getDevice() { return mDevice; }
- uint64_t getSize() { return mSize; }
- const std::string& getLabel() { return mLabel; }
- int getFlags() { return mFlags; }
+ const std::string& getId() const { return mId; }
+ const std::string& getEventPath() const { return mEventPath; }
+ const std::string& getSysPath() const { return mSysPath; }
+ const std::string& getDevPath() const { return mDevPath; }
+ dev_t getDevice() const { return mDevice; }
+ uint64_t getSize() const { return mSize; }
+ const std::string& getLabel() const { return mLabel; }
+ int getFlags() const { return mFlags; }
std::shared_ptr<VolumeBase> findVolume(const std::string& id);
- void listVolumes(VolumeBase::Type type, std::list<std::string>& list);
+ void listVolumes(VolumeBase::Type type, std::list<std::string>& list) const;
status_t create();
status_t destroy();
diff --git a/model/PrivateVolume.h b/model/PrivateVolume.h
index 85aa4dc..cb8e75d 100644
--- a/model/PrivateVolume.h
+++ b/model/PrivateVolume.h
@@ -39,9 +39,9 @@
public:
PrivateVolume(dev_t device, const std::string& keyRaw);
virtual ~PrivateVolume();
- const std::string& getFsType() { return mFsType; };
- const std::string& getRawDevPath() { return mRawDevPath; };
- const std::string& getRawDmDevPath() { return mDmDevPath; };
+ const std::string& getFsType() const { return mFsType; };
+ const std::string& getRawDevPath() const { return mRawDevPath; };
+ const std::string& getRawDmDevPath() const { return mDmDevPath; };
protected:
status_t doCreate() override;
diff --git a/model/VolumeBase.cpp b/model/VolumeBase.cpp
index 300add1..b04dd70 100644
--- a/model/VolumeBase.cpp
+++ b/model/VolumeBase.cpp
@@ -143,7 +143,7 @@
return OK;
}
-android::sp<android::os::IVoldListener> VolumeBase::getListener() {
+android::sp<android::os::IVoldListener> VolumeBase::getListener() const {
if (mSilent) {
return nullptr;
} else {
diff --git a/model/VolumeBase.h b/model/VolumeBase.h
index 92a83f0..28802d4 100644
--- a/model/VolumeBase.h
+++ b/model/VolumeBase.h
@@ -76,15 +76,15 @@
kBadRemoval,
};
- const std::string& getId() { return mId; }
- const std::string& getDiskId() { return mDiskId; }
- const std::string& getPartGuid() { return mPartGuid; }
- Type getType() { return mType; }
- int getMountFlags() { return mMountFlags; }
- userid_t getMountUserId() { return mMountUserId; }
- State getState() { return mState; }
- const std::string& getPath() { return mPath; }
- const std::string& getInternalPath() { return mInternalPath; }
+ const std::string& getId() const { return mId; }
+ const std::string& getDiskId() const { return mDiskId; }
+ const std::string& getPartGuid() const { return mPartGuid; }
+ Type getType() const { return mType; }
+ int getMountFlags() const { return mMountFlags; }
+ userid_t getMountUserId() const { return mMountUserId; }
+ State getState() const { return mState; }
+ const std::string& getPath() const { return mPath; }
+ const std::string& getInternalPath() const { return mInternalPath; }
status_t setDiskId(const std::string& diskId);
status_t setPartGuid(const std::string& partGuid);
@@ -116,7 +116,7 @@
status_t setPath(const std::string& path);
status_t setInternalPath(const std::string& internalPath);
- android::sp<android::os::IVoldListener> getListener();
+ android::sp<android::os::IVoldListener> getListener() const;
private:
/* ID that uniquely references volume while alive */