| 233 | } |
| 234 | |
| 235 | static bool ParseIntoMessage(void* msg, const uint8_t* data, size_t len) { |
| 236 | if (!msg || !g_parseFromArray || !data || len == 0) return false; |
| 237 | if (len > (size_t)INT_MAX) return false; |
| 238 | ProtoCrashGuard guard; |
| 239 | int sig = sigsetjmp(g_protoJmpBuf, 1); |
| 240 | if (sig != 0) { |
| 241 | LOG("[Hook] ParseFromArray helper crashed with signal %d while parsing %zu bytes", sig, len); |
| 242 | return false; |
| 243 | } |
| 244 | return g_parseFromArray(msg, data, (int)len) != 0; |
| 245 | } |
| 246 | |
| 247 | // Serialize a protobuf body object into a thread-local buffer for the |
| 248 | // GamesPlayed observer (runs on Steam's network thread). |
no outgoing calls
no test coverage detected