1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-01-09 01:18:00 +03:00

vsh: do not cast away const

Instead of using the same variable to store either a const pointer
or an allocated string, always make a copy.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Ján Tomko 2021-08-10 18:56:18 +02:00
parent 2c0f47e75c
commit 2cbc686d66

View File

@ -318,7 +318,7 @@ vshCmddefCheckInternals(vshControl *ctl,
case VSH_OT_ALIAS: {
size_t j;
char *name = (char *)opt->help; /* cast away const */
g_autofree char *name = NULL;
char *p;
if (opt->flags || !opt->help) {
@ -326,15 +326,16 @@ vshCmddefCheckInternals(vshControl *ctl,
opt->name, cmd->name);
return -1; /* alias options are tracked by the original name */
}
if ((p = strchr(name, '=')))
name = g_strndup(name, p - name);
if ((p = strchr(opt->help, '=')))
name = g_strndup(opt->help, p - opt->help);
else
name = g_strdup(opt->help);
for (j = i + 1; cmd->opts[j].name; j++) {
if (STREQ(name, cmd->opts[j].name) &&
cmd->opts[j].type != VSH_OT_ALIAS)
break;
}
if (name != opt->help) {
VIR_FREE(name);
if (p) {
/* If alias comes with value, replacement must not be bool */
if (cmd->opts[j].type == VSH_OT_BOOL) {
vshError(ctl, _("alias '%s' of command '%s' has mismatched alias type"),