| 409 | } |
| 410 | |
| 411 | static bool runtime_rendezvous_request_decode( |
| 412 | const uint8_t payload[CBM_DAEMON_RENDEZVOUS_REQUEST_SIZE], |
| 413 | char version[CBM_DAEMON_VERSION_TEXT_SIZE], char build[CBM_DAEMON_BUILD_FINGERPRINT_SIZE]) { |
| 414 | if (!payload || !version || !build || |
| 415 | runtime_get_u32(payload + RENDEZVOUS_REQUEST_ABI_OFFSET) != CBM_DAEMON_RENDEZVOUS_ABI || |
| 416 | !runtime_wire_string_decode(payload + RENDEZVOUS_REQUEST_VERSION_OFFSET, |
| 417 | CBM_DAEMON_RENDEZVOUS_VERSION_TEXT_CAP, version, false) || |
| 418 | !runtime_wire_string_decode(payload + RENDEZVOUS_REQUEST_BUILD_OFFSET, |
| 419 | CBM_DAEMON_RENDEZVOUS_BUILD_FINGERPRINT_CAP, build, false)) { |
| 420 | return false; |
| 421 | } |
| 422 | cbm_daemon_conflict_t validation; |
| 423 | return runtime_rendezvous_compare(version, build, version, build, &validation) == |
| 424 | CBM_DAEMON_HELLO_COMPATIBLE; |
| 425 | } |
| 426 | |
| 427 | static bool runtime_activation_action_valid(cbm_daemon_runtime_activation_action_t action) { |
| 428 | return action == CBM_DAEMON_RUNTIME_ACTIVATION_INSTALL || |
no test coverage detected