Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf0dd7cb authored by Elliott Hughes's avatar Elliott Hughes
Browse files

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

ubsan doesn't like us incrementing std::string::npos, even if we won't use
the result.

Bug: http://b/28729303
Test: ran tests
Change-Id: I8227eca57dc6f3e49626c7025514caa04ef18f0a
parent 01b25ab1
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ cc_library {
    cppflags: libbase_cppflags,
    export_include_dirs: ["include"],
    shared_libs: ["liblog"],
    sanitize: {
        misc_undefined: ["integer"],
    },
    target: {
        android: {
            srcs: [
@@ -86,6 +89,9 @@ cc_test {
        "strings_test.cpp",
        "test_main.cpp",
    ],
    sanitize: {
        misc_undefined: ["integer"],
    },
    target: {
        android: {
            srcs: ["properties_test.cpp"],
+3 −2
Original line number Diff line number Diff line
@@ -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;
}
+4 −0
Original line number Diff line number Diff line
@@ -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", ":");
}