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

Function checkArrayRead32

test/API/MemoryAccessTest.cpp:209–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

207}
208
209QBDI::VMAction checkArrayRead32(QBDI::VMInstanceRef vm,
210 QBDI::GPRState *gprState,
211 QBDI::FPRState *fprState, void *data) {
212
213 TestInfo *info = (TestInfo *)data;
214 std::vector<QBDI::MemoryAccess> memaccesses = vm->getInstMemoryAccess();
215 QBDI::Range<QBDI::rword> brange(
216 (QBDI::rword)info->buffer,
217 ((QBDI::rword)info->buffer) + info->buffer_size, QBDI::auth_addr_t());
218 for (const QBDI::MemoryAccess &memaccess : memaccesses) {
219 if (memaccess.type == QBDI::MEMORY_READ) {
220 if (brange.contains(memaccess.accessAddress)) {
221 size_t offset = (memaccess.accessAddress - brange.start()) >> 2;
222 if ((QBDI::rword)((uint32_t *)info->buffer)[offset] ==
223 memaccess.value) {
224 info->i += offset;
225 }
226 }
227 }
228 }
229 return QBDI::VMAction::CONTINUE;
230}
231
232QBDI::VMAction checkArrayWrite8(QBDI::VMInstanceRef vm,
233 QBDI::GPRState *gprState,

Callers 1

Calls 4

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

Tested by

no test coverage detected