From 20ab6c861d248ae2822b5f38d5c09dff7506fc3a Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Wed, 13 Nov 2013 23:31:08 -0800 Subject: Avoid reading off the end of empty mapping tables. Caught by valgrind. Bug: 11670287 Change-Id: Ia5feacd6780e8e32c7ed600b5908c0b7d7ed7343 --- runtime/mapping_table.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'runtime/mapping_table.h') diff --git a/runtime/mapping_table.h b/runtime/mapping_table.h index 2162008..9955f30 100644 --- a/runtime/mapping_table.h +++ b/runtime/mapping_table.h @@ -68,8 +68,10 @@ class MappingTable { native_pc_offset_(0), dex_pc_(0) { if (element == 0) { encoded_table_ptr_ = table_->FirstDexToPcPtr(); - native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_); - dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + if (end_ > 0) { + native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + } } else { DCHECK_EQ(table_->DexToPcSize(), element); } @@ -141,8 +143,10 @@ class MappingTable { native_pc_offset_(0), dex_pc_(0) { if (element == 0) { encoded_table_ptr_ = table_->FirstPcToDexPtr(); - native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_); - dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + if (end_ > 0) { + native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_); + } } else { DCHECK_EQ(table_->PcToDexSize(), element); } -- cgit v1.1