SdbpReadMappedData
NTSTATUS __stdcall SdbpReadMappedData(_DB *pdb, UINT64 dwOffset, VOID *pBuffer, UINT64 dwSize){
if( (int)dwOffset + (int)dwSize < (unsigned int)dwSize )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpReadMappedData",
0x2C8ui64,
(INT8 *)"Offset and region size add up to cause an integer overflow or underflow");
}
else
{
if( pdb[5] >= (unsigned int)(dwOffset + dwSize) )
{
memmove(pBuffer, (const VOID *)(*((_QWORD *)pdb + 1) + (unsigned int)dwOffset), dwSize);
return 1;
}
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpReadMappedData",
0x2CDui64,
(INT8 *)"Attempt to read past the end of the database offset 0x%lx size 0x%lx(0x%lx)");
}
return 0;
}Referenced by:
SdbGetTagDataSize
SdbGetTagFromTagID
SdbOpenDatabaseEx
SdbpGetTagHeadSize
SdbpOpenDatabaseInMemory
SdbpReadTagData