OSDN Git Service

Fix ProtoId ordering check in DexFileVerifier.
authorVladimir Marko <vmarko@google.com>
Tue, 3 May 2016 16:17:50 +0000 (17:17 +0100)
committerVladimir Marko <vmarko@google.com>
Thu, 5 May 2016 14:24:38 +0000 (15:24 +0100)
commit0ca8add2ae34c26291694ecc784d64f0cc1c1380
tree6c58e10e556a04afc88d25710934b04b12244cb1
parent59399abce0223e74af00193436e39e109d98dacb
Fix ProtoId ordering check in DexFileVerifier.

The code previously checked for kNoDexIndex16 as the type
list terminator. This is incorrect as we should not actually
see the kNoDexIndex16 in type lists in supported dex files.

To make sure that we don't see kNoDexIndex16, check the size
of the arrays with documented limits, i.e. type-ids and
proto-ids, see dex_file.h. In the ProtoId ordering check,
DCHECK() that we don't encounter kNoDexIndex16 and verify
that the previous list is not longer if the current list's
elements match.

Bug: 28580925
Change-Id: I7b17ce54b0047d97e13be88377676b1b7c713ae1
runtime/dex_file_verifier.cc
runtime/dex_file_verifier.h
runtime/dex_file_verifier_test.cc