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