Merge "adb: fix adbd feature parsing for no features."

This commit is contained in:
David Pursell 2015-09-28 16:02:10 +00:00 committed by Gerrit Code Review
commit 002f9d5c70
3 changed files with 11 additions and 0 deletions

View File

@ -239,6 +239,10 @@ void parse_banner(const std::string& banner, atransport* t) {
// "device::ro.product.name=x;ro.product.model=y;ro.product.device=z;".
std::vector<std::string> pieces = android::base::Split(banner, ":");
// Reset the features list or else if the server sends no features we may
// keep the existing feature set (http://b/24405971).
t->SetFeatures("");
if (pieces.size() > 2) {
const std::string& props = pieces[2];
for (auto& prop : android::base::Split(props, ";")) {

View File

@ -796,6 +796,10 @@ std::string FeatureSetToString(const FeatureSet& features) {
}
FeatureSet StringToFeatureSet(const std::string& features_string) {
if (features_string.empty()) {
return FeatureSet();
}
auto names = android::base::Split(features_string,
{kFeatureStringDelimiter});
return FeatureSet(names.begin(), names.end());

View File

@ -167,6 +167,9 @@ TEST(transport, SetFeatures) {
ASSERT_FALSE(t.has_feature("foo"));
ASSERT_TRUE(t.has_feature("bar"));
ASSERT_TRUE(t.has_feature("baz"));
t.SetFeatures("");
ASSERT_EQ(0U, t.features().size());
}
TEST(transport, parse_banner_no_features) {