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

Commit f251c1c5 authored by Steven Moreland's avatar Steven Moreland
Browse files

String16::remove - avoid overflow

Bug: 156999009
Test: libutils_test (cases added)
Change-Id: Iad46d95d9848928ba81000090b2fe9aec1e5eaac
parent ddb18842
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -441,7 +441,7 @@ status_t String16::remove(size_t len, size_t begin)
        mString = getEmptyString();
        return OK;
    }
    if ((begin+len) > N) len = N-begin;
    if (len > N || len > N - begin) len = N - begin;
    if (begin == 0 && len == N) {
        return OK;
    }
+14 −0
Original line number Diff line number Diff line
@@ -90,6 +90,13 @@ TEST(String16Test, Insert) {
    EXPECT_STR16EQ(u"VerifyInsert me", tmp);
}

TEST(String16Test, RemoveDefault) {
    String16 tmp("Verify me");
    tmp.remove(4);
    EXPECT_EQ(4U, tmp.size());
    EXPECT_STR16EQ(u"Veri", tmp);
}

TEST(String16Test, Remove) {
    String16 tmp("Verify me");
    tmp.remove(2, 6);
@@ -97,6 +104,13 @@ TEST(String16Test, Remove) {
    EXPECT_STR16EQ(u" m", tmp);
}

TEST(String16Test, RemoveOutOfBounds) {
    String16 tmp("Verify me");
    tmp.remove(100, 6);
    EXPECT_EQ(3U, tmp.size());
    EXPECT_STR16EQ(u" me", tmp);
}

TEST(String16Test, MakeLower) {
    String16 tmp("Verify Me!");
    tmp.makeLower();