MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / DeserializeFromRawView

Method DeserializeFromRawView

view/kernelcache/core/KernelCache.cpp:328–363  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

326}
327
328void KernelCache::DeserializeFromRawView(std::lock_guard<std::mutex>& lock)
329{
330 std::lock_guard cacheInfoLock(m_viewSpecificState->cacheInfoMutex);
331 if (m_viewSpecificState->cacheInfo)
332 {
333 m_cacheInfo = m_viewSpecificState->cacheInfo;
334 m_modifiedState = std::make_unique<ModifiedState>();
335 m_metadataValid = true;
336 return;
337 }
338
339 if (KernelCacheMetadata::ViewHasMetadata(m_kcView))
340 {
341 auto metadata = KernelCacheMetadata::LoadFromView(m_kcView);
342 if (!metadata)
343 {
344 m_metadataValid = false;
345 m_logger->LogError("Failed to deserialize Shared Cache metadata");
346 return;
347 }
348
349 m_viewSpecificState->viewState = metadata->state->viewState.value_or(KCViewStateUnloaded);
350 m_viewSpecificState->state = std::move(*metadata->state);
351 m_viewSpecificState->cacheInfo = std::move(metadata->cacheInfo);
352
353 m_cacheInfo = m_viewSpecificState->cacheInfo;
354 m_modifiedState = std::make_unique<ModifiedState>();
355 m_metadataValid = true;
356 return;
357 }
358
359 m_cacheInfo = nullptr;
360 m_modifiedState = std::make_unique<ModifiedState>();
361 m_modifiedState->viewState = KCViewStateUnloaded;
362 m_metadataValid = true;
363}
364
365
366std::string to_hex_string(uint64_t value)

Callers

nothing calls this directly

Calls 1

LogErrorMethod · 0.80

Tested by

no test coverage detected