diff options
author | Sebastien Hertz <shertz@google.com> | 2014-05-21 10:07:42 +0200 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2014-05-21 10:08:31 +0200 |
commit | 5c0049067a953d7a2383d3064a84a32d1efa3a24 (patch) | |
tree | be0377c1348c8aea84a7308fd5977657b8f3622d /runtime/interpreter/interpreter_switch_impl.cc | |
parent | bf17a08fb48fa296acb09904d4c10ba42f63f55d (diff) | |
download | art-5c0049067a953d7a2383d3064a84a32d1efa3a24.zip art-5c0049067a953d7a2383d3064a84a32d1efa3a24.tar.gz art-5c0049067a953d7a2383d3064a84a32d1efa3a24.tar.bz2 |
Secure move-exception in intepreter
Copies exception into the shadow frame before clearing it from its thread so
it's always reachable.
Change-Id: Ifdc68280424f5099aacf0724da94889881a99551
Diffstat (limited to 'runtime/interpreter/interpreter_switch_impl.cc')
-rw-r--r-- | runtime/interpreter/interpreter_switch_impl.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/runtime/interpreter/interpreter_switch_impl.cc b/runtime/interpreter/interpreter_switch_impl.cc index c1d24f5..deb897a 100644 --- a/runtime/interpreter/interpreter_switch_impl.cc +++ b/runtime/interpreter/interpreter_switch_impl.cc @@ -163,9 +163,9 @@ JValue ExecuteSwitchImpl(Thread* self, MethodHelper& mh, const DexFile::CodeItem break; case Instruction::MOVE_EXCEPTION: { PREAMBLE(); - Throwable* exception = self->GetException(NULL); - self->ClearException(); + Throwable* exception = self->GetException(nullptr); shadow_frame.SetVRegReference(inst->VRegA_11x(inst_data), exception); + self->ClearException(); inst = inst->Next_1xx(); break; } |