From f0ea4c8737ec911074cc4d284f984c5c353f32e2 Mon Sep 17 00:00:00 2001 From: Sergio Giro Date: Tue, 28 Jun 2016 18:26:10 +0100 Subject: Add bound checks to utf16_to_utf8 Test: ran libaapt2_tests64 Bug: 29250543 Change-Id: I1ebc017af623b6514cf0c493e8cd8e1d59ea26c3 (cherry picked from commit 4781057e78f63e0e99af109cebf3b6a78f4bfbb6) --- tools/aapt/Android.mk | 2 +- tools/aapt2/Util.cpp | 4 +++- tools/split-select/Android.mk | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk index b991d55..08cbd5a 100644 --- a/tools/aapt/Android.mk +++ b/tools/aapt/Android.mk @@ -63,8 +63,8 @@ aaptHostLdLibs := aaptHostStaticLibs := \ libandroidfw \ libpng \ - liblog \ libutils \ + liblog \ libcutils \ libexpat \ libziparchive-host \ diff --git a/tools/aapt2/Util.cpp b/tools/aapt2/Util.cpp index 03ecd1a..5b064e3 100644 --- a/tools/aapt2/Util.cpp +++ b/tools/aapt2/Util.cpp @@ -303,8 +303,10 @@ std::string utf16ToUtf8(const StringPiece16& utf16) { } std::string utf8; + // Make room for '\0' explicitly. + utf8.resize(utf8Length + 1); + utf16_to_utf8(utf16.data(), utf16.length(), &*utf8.begin(), utf8Length + 1); utf8.resize(utf8Length); - utf16_to_utf8(utf16.data(), utf16.length(), &*utf8.begin()); return utf8; } diff --git a/tools/split-select/Android.mk b/tools/split-select/Android.mk index d9ddf08..54f0a1f 100644 --- a/tools/split-select/Android.mk +++ b/tools/split-select/Android.mk @@ -48,8 +48,8 @@ hostStaticLibs := \ libaapt \ libandroidfw \ libpng \ - liblog \ libutils \ + liblog \ libcutils \ libexpat \ libziparchive-host \ -- cgit v1.1