journalctl: erase verify key before free

Even optarg is erased, copied string was not erased.
Let's erase the copied key for safety.
This commit is contained in:
Yu Watanabe
2024-10-16 19:27:36 +09:00
parent c256fb06d7
commit d0ad4e88d4

View File

@@ -96,7 +96,7 @@ static ImagePolicy *arg_image_policy = NULL;
STATIC_DESTRUCTOR_REGISTER(arg_file, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_facilities, set_freep);
STATIC_DESTRUCTOR_REGISTER(arg_verify_key, freep);
STATIC_DESTRUCTOR_REGISTER(arg_verify_key, erase_and_freep);
STATIC_DESTRUCTOR_REGISTER(arg_syslog_identifier, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_exclude_identifier, strv_freep);
STATIC_DESTRUCTOR_REGISTER(arg_system_units, strv_freep);
@@ -689,9 +689,11 @@ static int parse_argv(int argc, char *argv[]) {
break;
case ARG_VERIFY_KEY:
r = free_and_strdup(&arg_verify_key, optarg);
if (r < 0)
return r;
erase_and_free(arg_verify_key);
arg_verify_key = strdup(optarg);
if (!arg_verify_key)
return log_oom();
/* Use memset not explicit_bzero() or similar so this doesn't look confusing
* in ps or htop output. */
memset(optarg, 'x', strlen(optarg));