diff options
-rw-r--r-- | content/renderer/pepper/pepper_truetype_font_win.cc | 10 | ||||
-rw-r--r-- | ppapi/tests/test_char_set.cc | 3 |
2 files changed, 9 insertions, 4 deletions
diff --git a/content/renderer/pepper/pepper_truetype_font_win.cc b/content/renderer/pepper/pepper_truetype_font_win.cc index e515bd1..b8c5f96 100644 --- a/content/renderer/pepper/pepper_truetype_font_win.cc +++ b/content/renderer/pepper/pepper_truetype_font_win.cc @@ -219,13 +219,17 @@ int32_t PepperTrueTypeFontWin::GetTable(uint32_t table_tag, if (table_size == GDI_ERROR) return PP_ERROR_FAILED; + // TODO(bbudge1) add check for when offset > file size DWORD safe_offset = std::min(static_cast<DWORD>(offset), table_size); DWORD safe_length = std::min(table_size - safe_offset, static_cast<DWORD>(max_data_length)); data->resize(safe_length); - table_size = GetFontData(hdc, table_tag, safe_offset, - reinterpret_cast<uint8_t*>(&(*data)[0]), - safe_length); + if (max_data_length == 0) + table_size = 0; + else + table_size = GetFontData(hdc, table_tag, safe_offset, + reinterpret_cast<uint8_t*>(&(*data)[0]), + safe_length); if (table_size == GDI_ERROR) return PP_ERROR_FAILED; return static_cast<int32_t>(table_size); diff --git a/ppapi/tests/test_char_set.cc b/ppapi/tests/test_char_set.cc index de998d0..f7ff910 100644 --- a/ppapi/tests/test_char_set.cc +++ b/ppapi/tests/test_char_set.cc @@ -113,7 +113,8 @@ std::string TestCharSet::TestUTF16ToCharSet() { std::vector<uint16_t> utf16; utf16.push_back(0); std::string output_buffer; - uint32_t utf8result_len = static_cast<uint32_t>(output_buffer.size()); + output_buffer.resize(1); + uint32_t utf8result_len = 0; PP_Bool result = char_set_trusted_interface_->UTF16ToCharSet( &utf16[0], 0, "latin1", PP_CHARSET_TRUSTED_CONVERSIONERROR_SUBSTITUTE, &output_buffer[0], &utf8result_len); |