diff options
author | Andreas Gampe <agampe@google.com> | 2015-06-26 17:33:47 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2015-06-26 17:40:23 -0700 |
commit | 3ae8da0a803370be9dd410226438f636af553e22 (patch) | |
tree | 346c8f1ba2abc9a2f6af283d4abcefc1f4de7f06 /test | |
parent | ffd43f62c23d2cbf84ab549dc37ca1dda2ac438d (diff) | |
download | art-3ae8da0a803370be9dd410226438f636af553e22.zip art-3ae8da0a803370be9dd410226438f636af553e22.tar.gz art-3ae8da0a803370be9dd410226438f636af553e22.tar.bz2 |
ART: Fix invalid access and DCHECK in verifier
If we get a throwing failure when setting types from the signature,
the work instruction index is still invalid. Do not try to copy the
line then.
As a throwing failure might happen in the above instance, but the
flow analysis expects to have a cleared failure flag before processing
each instruction, clear the flag.
Bug: 21645819
Bug: 22080519
Change-Id: I224c4dad98fa5bb50e62210f0ee30c0dd020e3a6
Diffstat (limited to 'test')
-rw-r--r-- | test/800-smali/expected.txt | 1 | ||||
-rw-r--r-- | test/800-smali/smali/b_21645819.smali | 9 | ||||
-rw-r--r-- | test/800-smali/src/Main.java | 2 | ||||
-rw-r--r-- | test/800-smali/src/pkg/ProtectedClass.java | 20 |
4 files changed, 32 insertions, 0 deletions
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt index 80b4f57..2196a88 100644 --- a/test/800-smali/expected.txt +++ b/test/800-smali/expected.txt @@ -22,4 +22,5 @@ b/21902684 b/21863767 b/21886894 b/22080519 +b/21645819 Done! diff --git a/test/800-smali/smali/b_21645819.smali b/test/800-smali/smali/b_21645819.smali new file mode 100644 index 0000000..195d662 --- /dev/null +++ b/test/800-smali/smali/b_21645819.smali @@ -0,0 +1,9 @@ +.class public LB21645819; +.super Ljava/lang/Object; + +# The method declares a parameter of an inaccessible class. This should not abort/kill us. + +.method public static run(Lpkg/ProtectedClass;)V +.registers 10 + return-void +.end method
\ No newline at end of file diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java index 337d0d9..e6f065e 100644 --- a/test/800-smali/src/Main.java +++ b/test/800-smali/src/Main.java @@ -91,6 +91,8 @@ public class Main { null)); testCases.add(new TestCase("b/22080519", "B22080519", "run", null, new NullPointerException(), null)); + testCases.add(new TestCase("b/21645819", "B21645819", "run", new Object[] { null }, + null, null)); } public void runTests() { diff --git a/test/800-smali/src/pkg/ProtectedClass.java b/test/800-smali/src/pkg/ProtectedClass.java new file mode 100644 index 0000000..b262155 --- /dev/null +++ b/test/800-smali/src/pkg/ProtectedClass.java @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package pkg; + +class ProtectedClass { +} |