diff --git a/src/analyze/analyze-unit-gdb.c b/src/analyze/analyze-unit-gdb.c index fc06f86030..85e7488ca0 100644 --- a/src/analyze/analyze-unit-gdb.c +++ b/src/analyze/analyze-unit-gdb.c @@ -63,8 +63,11 @@ int verb_unit_gdb(int argc, char *argv[], void *userdata) { 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); diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 762317a653..d76c09b520 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -81,8 +81,8 @@ usec_t arg_fuzz = 0; 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; @@ -109,6 +109,8 @@ char *arg_drm_device_path = NULL; 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); @@ -665,7 +667,9 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_DEBUGGER: - arg_debugger = strdup(optarg); + r = free_and_strdup_warn(&arg_debugger, optarg); + if (r < 0) + return r; break; case 'A': { diff --git a/src/analyze/analyze.h b/src/analyze/analyze.h index 1d489b723e..d5b7bfcb82 100644 --- a/src/analyze/analyze.h +++ b/src/analyze/analyze.h @@ -24,7 +24,8 @@ extern PagerFlags arg_pager_flags; 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;