Merge "Fix ubsan failure in android::base::Split."

This commit is contained in:
Treehugger Robot 2017-02-14 18:43:16 +00:00 committed by Gerrit Code Review
commit aa9548dbb4
3 changed files with 13 additions and 2 deletions

View File

@ -37,6 +37,9 @@ cc_library {
cppflags: libbase_cppflags,
export_include_dirs: ["include"],
shared_libs: ["liblog"],
sanitize: {
misc_undefined: ["integer"],
},
target: {
android: {
srcs: [
@ -97,6 +100,9 @@ cc_test {
"strings_test.cpp",
"test_main.cpp",
],
sanitize: {
misc_undefined: ["integer"],
},
target: {
android: {
srcs: [

View File

@ -36,11 +36,12 @@ std::vector<std::string> Split(const std::string& s,
size_t base = 0;
size_t found;
do {
while (true) {
found = s.find_first_of(delimiters, base);
result.push_back(s.substr(base, found - base));
if (found == s.npos) break;
base = found + 1;
} while (found != s.npos);
}
return result;
}

View File

@ -251,3 +251,7 @@ TEST(strings, EqualsIgnoreCase) {
ASSERT_FALSE(android::base::EqualsIgnoreCase("foo", "bar"));
ASSERT_FALSE(android::base::EqualsIgnoreCase("foo", "fool"));
}
TEST(strings, ubsan_28729303) {
android::base::Split("/dev/null", ":");
}