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>
Tue, 10 May 2016 11:02:40 +0000 (12:02 +0100)
commitd6bcae6d82d99727150f0e3c3d9cb3e9bc739d50
treede7a8882c4df7f0fd9f4561f1c4d245a6fc7cd57
parent23fddf80cdfc51136ad7684d74961778e79be5bc
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

(cherry picked from commit 0ca8add2ae34c26291694ecc784d64f0cc1c1380)

Change-Id: Ied6dcbd8d04e3dfef5695dbd9b3a30a079038b2b
runtime/dex_file_verifier.cc
runtime/dex_file_verifier.h
runtime/dex_file_verifier_test.cc