machine: Fix replacement of '_' by '-' in machine property names

machine_set_property() replaces '_' by '-' in the property name.
Except it fails to replace an initial '_'.  Screwed up in commit
b0ddb8b.  Reproducer: "-M pc,__foo_bar=true" produces "Property
'._-foo-bar' not found".

Error messages using a mangled name rather than the name the user
actually wrote is user-hostile, but that's a different topic.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Markus Armbruster 2016-10-13 18:44:14 +02:00 committed by Eduardo Habkost
parent 0975b8b823
commit f279ee4583
1 changed files with 4 additions and 5 deletions

9
vl.c
View File

@ -2804,17 +2804,16 @@ static int machine_set_property(void *opaque,
{
Object *obj = OBJECT(opaque);
Error *local_err = NULL;
char *c, *qom_name;
char *p, *qom_name;
if (strcmp(name, "type") == 0) {
return 0;
}
qom_name = g_strdup(name);
c = qom_name;
while (*c++) {
if (*c == '_') {
*c = '-';
for (p = qom_name; *p; p++) {
if (*p == '_') {
*p = '-';
}
}