MCPcopy Create free account
hub / github.com/QBDI/QBDI / checkArrayWrite32

Function checkArrayWrite32

test/API/MemoryAccessTest.cpp:277–298  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

275}
276
277QBDI::VMAction checkArrayWrite32(QBDI::VMInstanceRef vm,
278 QBDI::GPRState *gprState,
279 QBDI::FPRState *fprState, void *data) {
280
281 TestInfo *info = (TestInfo *)data;
282 std::vector<QBDI::MemoryAccess> memaccesses = vm->getInstMemoryAccess();
283 QBDI::Range<QBDI::rword> brange(
284 (QBDI::rword)info->buffer,
285 ((QBDI::rword)info->buffer) + info->buffer_size, QBDI::auth_addr_t());
286 for (const QBDI::MemoryAccess &memaccess : memaccesses) {
287 if (memaccess.type == QBDI::MEMORY_WRITE) {
288 if (brange.contains(memaccess.accessAddress)) {
289 size_t offset = (memaccess.accessAddress - brange.start()) >> 2;
290 if ((QBDI::rword)((uint32_t *)info->buffer)[offset] ==
291 memaccess.value) {
292 info->i += offset;
293 }
294 }
295 }
296 }
297 return QBDI::VMAction::CONTINUE;
298}
299
300QBDI::VMAction checkUnrolledReadInst(QBDI::VMInstanceRef vm,
301 QBDI::GPRState *gprState,

Callers

nothing calls this directly

Calls 4

auth_addr_tClass · 0.85
startMethod · 0.80
getInstMemoryAccessMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected