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

Commit 995c91c9 authored by Grant Hernandez's avatar Grant Hernandez
Browse files

MTP: handle bad conversion from UTF-16 to UTF-8

Test: repo sync -c -j 100 && mmm -j && flash
Test: atest mtp_ffs_handle_test
Test: HWASAN_OPTIONS="handle_abort=2" ./mtp_fuzzer all_corpus/
Bug: 137780371
Change-Id: I4bd7e926c8c04913f171806b9046d31e99fd8a73
parent 1b96fe4a
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -26,14 +26,31 @@

namespace {

std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> gConvert;
const char * utf16_cerror = "__CONVERSION_ERROR__";
const char16_t * utf8_cerror = u"__CONVERSION_ERROR__";

std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> gConvert(utf16_cerror, utf8_cerror);

static std::string utf16ToUtf8(std::u16string input_str) {
    return gConvert.to_bytes(input_str);
    std::string conversion = gConvert.to_bytes(input_str);

    if (conversion == utf16_cerror) {
        ALOGE("Unable to convert UTF-16 string to UTF-8");
        return "";
    } else {
        return conversion;
    }
}

static std::u16string utf8ToUtf16(std::string input_str) {
    return gConvert.from_bytes(input_str);
    std::u16string conversion = gConvert.from_bytes(input_str);

    if (conversion == utf8_cerror) {
        ALOGE("Unable to convert UTF-8 string to UTF-16");
        return u"";
    } else {
        return conversion;
    }
}

} // namespace