[js, ARM] Always check error return from BufferOffset::diffB.

master
Fedor 2019-07-08 13:09:08 +03:00
parent 2e3a0eefbd
commit 12db4f07ea
2 changed files with 10 additions and 2 deletions

View File

@ -2401,7 +2401,12 @@ Assembler::as_b(Label* l, Condition c)
if (oom())
return BufferOffset();
as_b(BufferOffset(l).diffB<BOffImm>(ret), c, ret);
BOffImm off = BufferOffset(l).diffB<BOffImm>(ret);
if (off.isInvalid()) {
m_buffer.fail_bail();
return BufferOffset();
}
as_b(off, c, ret);
#ifdef JS_DISASM_ARM
spewBranch(m_buffer.getInstOrNull(ret), l);
#endif

View File

@ -5012,7 +5012,10 @@ void
MacroAssembler::patchCall(uint32_t callerOffset, uint32_t calleeOffset)
{
BufferOffset inst(callerOffset - 4);
as_bl(BufferOffset(calleeOffset).diffB<BOffImm>(inst), Always, inst);
BOffImm off = BufferOffset(calleeOffset).diffB<BOffImm>(inst);
MOZ_RELEASE_ASSERT(!off.isInvalid(),
"Failed to insert necessary far jump islands");
as_bl(off, Always, inst);
}
CodeOffset