if (r < 0)
return log_error_errno(r, "Failed to read the main PID of %s from reply: %m", unit);
- if (!arg_debugger)
- arg_debugger = secure_getenv("SYSTEMD_DEBUGGER") ?: "gdb";
+ if (!arg_debugger) {
+ arg_debugger = strdup(secure_getenv("SYSTEMD_DEBUGGER") ?: "gdb");
+ if (!arg_debugger)
+ return log_oom();
+ }
_cleanup_strv_free_ char **debugger_call = NULL;
r = strv_extend(&debugger_call, arg_debugger);
PagerFlags arg_pager_flags = 0;
CatFlags arg_cat_flags = 0;
BusTransport arg_transport = BUS_TRANSPORT_LOCAL;
-const char *arg_debugger = NULL;
-static char **arg_debugger_args = NULL;
+char *arg_debugger = NULL;
+char **arg_debugger_args = NULL;
const char *arg_host = NULL;
RuntimeScope arg_runtime_scope = RUNTIME_SCOPE_SYSTEM;
RecursiveErrors arg_recursive_errors = _RECURSIVE_ERRORS_INVALID;
STATIC_DESTRUCTOR_REGISTER(arg_dot_from_patterns, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_dot_to_patterns, strv_freep);
+STATIC_DESTRUCTOR_REGISTER(arg_debugger, freep);
+STATIC_DESTRUCTOR_REGISTER(arg_debugger_args, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_root, freep);
STATIC_DESTRUCTOR_REGISTER(arg_image, freep);
STATIC_DESTRUCTOR_REGISTER(arg_security_policy, freep);
break;
case ARG_DEBUGGER:
- arg_debugger = strdup(optarg);
+ r = free_and_strdup_warn(&arg_debugger, optarg);
+ if (r < 0)
+ return r;
break;
case 'A': {
extern CatFlags arg_cat_flags;
extern BusTransport arg_transport;
extern const char *arg_host;
-extern const char *arg_debugger;
+extern char *arg_debugger;
+extern char **arg_debugger_args;
extern RuntimeScope arg_runtime_scope;
extern RecursiveErrors arg_recursive_errors;
extern bool arg_man;