Mercurial > hg > truffle
comparison src/cpu/x86/vm/interp_masm_x86_64.cpp @ 13034:ea79ab313e98
8027252: Crash in interpreter because get_unsigned_2_byte_index_at_bcp reads 4 bytes
Summary: Use 2-byte loads to load indexes from the byte code stream to avoid out of bounds reads.
Reviewed-by: coleenp, sspitsyn
author | mgerdin |
---|---|
date | Wed, 30 Oct 2013 15:35:25 +0100 |
parents | 5ccbab1c69f3 |
children | 096c224171c4 d3f14809b051 |
comparison
equal
deleted
inserted
replaced
13002:1a04de1aaedb | 13034:ea79ab313e98 |
---|---|
190 | 190 |
191 void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp( | 191 void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp( |
192 Register reg, | 192 Register reg, |
193 int bcp_offset) { | 193 int bcp_offset) { |
194 assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode"); | 194 assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode"); |
195 movl(reg, Address(r13, bcp_offset)); | 195 load_unsigned_short(reg, Address(r13, bcp_offset)); |
196 bswapl(reg); | 196 bswapl(reg); |
197 shrl(reg, 16); | 197 shrl(reg, 16); |
198 } | 198 } |
199 | 199 |
200 | 200 |