Merge "minadbd: adb rescue getprop returns newline-terminated result."

This commit is contained in:
Tao Bao 2019-06-10 23:43:09 +00:00 committed by Gerrit Code Review
commit cb930939a4

View file

@ -156,9 +156,10 @@ static void RescueInstallHostService(unique_fd sfd, const std::string& args) {
}
}
// Answers the query on a given property. The result will be written to the given sfd. If given an
// empty string, dumps all the supported properties (similar to `adb shell getprop`) in lines, e.g.
// "[prop]: [value]".
// Answers the query on a given property |prop|, by writing the result to the given |sfd|. The
// result will be newline-terminated, so nonexistent or nonallowed query will be answered with "\n".
// If given an empty string, dumps all the supported properties (analogous to `adb shell getprop`)
// in lines, e.g. "[prop]: [value]".
static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) {
static const std::set<std::string> kGetpropAllowedProps = {
"ro.build.date.utc",
@ -171,10 +172,6 @@ static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) {
"ro.product.device",
"ro.product.vendor.device",
};
if (!prop.empty() && kGetpropAllowedProps.find(prop) == kGetpropAllowedProps.end()) {
return;
}
std::string result;
if (prop.empty()) {
for (const auto& key : kGetpropAllowedProps) {
@ -184,11 +181,11 @@ static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) {
}
result += "[" + key + "]: [" + value + "]\n";
}
} else {
result = android::base::GetProperty(prop, "");
} else if (kGetpropAllowedProps.find(prop) != kGetpropAllowedProps.end()) {
result = android::base::GetProperty(prop, "") + "\n";
}
if (result.empty()) {
return;
result = "\n";
}
if (!android::base::WriteFully(sfd, result.data(), result.size())) {
exit(kMinadbdHostSocketIOError);