Skip to content

Commit

Permalink
Fixed UB in ARM64 JIT compiler
Browse files Browse the repository at this point in the history
Fixed unaligned memory writes
SChernykh committed Oct 20, 2023
1 parent d3c9648 commit 8f91d31
Showing 2 changed files with 3 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/jit_compiler_a64.cpp
Original file line number Diff line number Diff line change
@@ -709,7 +709,8 @@ void JitCompilerA64::h_IMUL_RCP(Instruction& instr, uint32_t& codePos)
const uint32_t literal_id = (ImulRcpLiteralsEnd - literalPos) / sizeof(uint64_t);

literalPos -= sizeof(uint64_t);
*(uint64_t*)(code + literalPos) = (q << shift) + ((r << shift) / divisor);
const uint64_t randomx_reciprocal = (q << shift) + ((r << shift) / divisor);
memcpy(code + literalPos, &randomx_reciprocal, sizeof(randomx_reciprocal));

if (literal_id < 12)
{
2 changes: 1 addition & 1 deletion src/jit_compiler_a64.hpp
Original file line number Diff line number Diff line change
@@ -81,7 +81,7 @@ namespace randomx {

static void emit64(uint64_t val, uint8_t* code, uint32_t& codePos)
{
*(uint64_t*)(code + codePos) = val;
memcpy(code + codePos, &val, sizeof(val));
codePos += sizeof(val);
}

0 comments on commit 8f91d31

Please sign in to comment.