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