MCPcopy Create free account
hub / github.com/Selectively11/CloudRedirect / SEH_SerializeToArray

Function SEH_SerializeToArray

src/platform/win/cloud_intercept.cpp:1616–1653  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1614}
1615
1616static ptrdiff_t SEH_SerializeToArray(void* bodyObj, uint8_t* buf, uint64_t expectedSize) {
1617 if (expectedSize > (uint64_t)INT_MAX) {
1618 LOG("[VtHook] SerializeToArray size %llu exceeds INT_MAX, rejecting", expectedSize);
1619 return -1;
1620 }
1621
1622 __try {
1623 uintptr_t bufAddr = reinterpret_cast<uintptr_t>(buf);
1624 uintptr_t result = g_serializeToArray(bodyObj, buf, (int)expectedSize);
1625 if (!result) return -1;
1626
1627 if (g_detectedSteamVersion.load(std::memory_order_relaxed) >= 1778281814ULL) {
1628 if ((result & 0xFF) != 0) return (ptrdiff_t)expectedSize;
1629 return -1;
1630 }
1631
1632 if (result >= bufAddr && result <= bufAddr + expectedSize) {
1633 return static_cast<ptrdiff_t>(result - bufAddr);
1634 }
1635
1636 if ((result & 0xFF) != 0) {
1637 return (ptrdiff_t)expectedSize;
1638 }
1639
1640 if (result < bufAddr) {
1641 LOG("[VtHook] SerializeToArray returned invalid end pointer %p (buf=%p)",
1642 (void*)result, (void*)bufAddr);
1643 return -1;
1644 }
1645
1646 LOG("[VtHook] SerializeToArray returned invalid end pointer %p (buf=%p)",
1647 (void*)result, (void*)bufAddr);
1648 return -1;
1649 } __except(EXCEPTION_EXECUTE_HANDLER) {
1650 LOG("[VtHook] EXCEPTION in SerializeToArray: code=0x%08X", GetExceptionCode());
1651 return -1;
1652 }
1653}
1654
1655static std::vector<uint8_t> SerializeBodyToBytes(void* bodyObj) {
1656 if (!bodyObj || !g_serializeToArray) return {};

Callers 1

SerializeBodyToBytesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected