SdbpReadMappedData
INT64 __fastcall SdbpReadMappedData(INT64 a1, UINT64 a2, VOID *a3, UINT64 a4){
int v5;
int v6;
int v7;
if( (int)a2 + (int)a4 < (unsigned int)a4 )
{
AslLogCallPrintf(
1ui64,
"SdbpReadMappedData",
0x2C8ui64,
"Offset and region size add up to cause an integer overflow or underflow");
}
else
{
if( *(_DWORD *)(a1 + 20) >= (unsigned int)(a2 + a4) )
{
memmove((UINT8 *)a3, (UINT8 *)(*(_QWORD *)(a1 + 8) + (unsigned int)a2), (unsigned int)a4);
return 1i64;
}
v7 = *(_DWORD *)(a1 + 20);
v6 = a4;
v5 = a2;
AslLogCallPrintf(
1ui64,
"SdbpReadMappedData",
0x2CDui64,
"Attempt to read past the end of the database offset 0x%lx size 0x%lx(0x%lx)",
v5,
v6,
v7);
}
return 0i64;
}Referenced by:
SdbGetTagDataSize
SdbGetTagFromTagID
SdbOpenDatabaseEx
SdbpGetTagHeadSize
SdbpOpenDatabaseInMemory
SdbpReadTagData