| 1377 | } |
| 1378 | |
| 1379 | static bool main_session_context(const char *preferred_root, char root_out[MAIN_PATH_CAP], |
| 1380 | char allowed_out[MAIN_PATH_CAP], const char **allowed_out_ptr) { |
| 1381 | const char *root = preferred_root && preferred_root[0] ? preferred_root : "."; |
| 1382 | if (!cbm_canonical_path(root, root_out, MAIN_PATH_CAP)) { |
| 1383 | return false; |
| 1384 | } |
| 1385 | char configured[MAIN_PATH_CAP]; |
| 1386 | const char *allowed = cbm_safe_getenv("CBM_ALLOWED_ROOT", configured, sizeof(configured), NULL); |
| 1387 | if (allowed && allowed[0]) { |
| 1388 | if (!cbm_canonical_path(allowed, allowed_out, MAIN_PATH_CAP)) { |
| 1389 | return false; |
| 1390 | } |
| 1391 | *allowed_out_ptr = allowed_out; |
| 1392 | } else { |
| 1393 | allowed_out[0] = '\0'; |
| 1394 | *allowed_out_ptr = NULL; |
| 1395 | } |
| 1396 | return true; |
| 1397 | } |
| 1398 | |
| 1399 | static bool main_set_client_context(cbm_daemon_runtime_client_t *client, const char *preferred_root, |
| 1400 | cbm_mcp_tool_profile_t tool_profile, const char *hook_event, |
no test coverage detected