object_resolve_path*() ambiguous path detection breaks when
ambiguous==NULL and the object tree have 3 objects of the same type and
only 2 of them are under the same parent. e.g.:
/container/obj1 (TYPE_FOO)
/container/obj2 (TYPE_FOO)
/obj2 (TYPE_FOO)
With the above tree, object_resolve_path_type("", TYPE_FOO, NULL) will
incorrectly return /obj2, because the search inside "/container" will
return NULL, and the match at "/obj2" won't be detected as ambiguous.
Fix that by always calling object_resolve_partial_path() with a non-NULL
ambiguous parameter.
Test case included.
Reported-by: Igor Mammedov <imammedo@redhat.com>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Eduardo Habkost (2):
tests: Test case for object_resolve_path*()
qom: Fix ambiguous path detection when ambiguous=NULL
qom/object.c | 17 ++++++++---------
tests/check-qom-proplist.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 9 deletions(-)
--
2.9.4
On 07/07/17 22:30, Eduardo Habkost wrote:
> object_resolve_path*() ambiguous path detection breaks when
> ambiguous==NULL and the object tree have 3 objects of the same type and
> only 2 of them are under the same parent. e.g.:
>
> /container/obj1 (TYPE_FOO)
> /container/obj2 (TYPE_FOO)
> /obj2 (TYPE_FOO)
>
> With the above tree, object_resolve_path_type("", TYPE_FOO, NULL) will
> incorrectly return /obj2, because the search inside "/container" will
> return NULL, and the match at "/obj2" won't be detected as ambiguous.
>
> Fix that by always calling object_resolve_partial_path() with a non-NULL
> ambiguous parameter.
>
> Test case included.
>
> Reported-by: Igor Mammedov <imammedo@redhat.com>
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>
> Eduardo Habkost (2):
> tests: Test case for object_resolve_path*()
> qom: Fix ambiguous path detection when ambiguous=NULL
>
> qom/object.c | 17 ++++++++---------
> tests/check-qom-proplist.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 52 insertions(+), 9 deletions(-)
I've done a quick test here and I get a pass on "make check" with these
patches applied so:
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Later on I'll also rework my fw_cfg patchset and send out a v8 which
should hopefully be the last iteration.
ATB,
Mark.
On Fri, Jul 07, 2017 at 06:30:50PM -0300, Eduardo Habkost wrote:
> object_resolve_path*() ambiguous path detection breaks when
> ambiguous==NULL and the object tree have 3 objects of the same type and
> only 2 of them are under the same parent. e.g.:
>
> /container/obj1 (TYPE_FOO)
> /container/obj2 (TYPE_FOO)
> /obj2 (TYPE_FOO)
>
> With the above tree, object_resolve_path_type("", TYPE_FOO, NULL) will
> incorrectly return /obj2, because the search inside "/container" will
> return NULL, and the match at "/obj2" won't be detected as ambiguous.
>
> Fix that by always calling object_resolve_partial_path() with a non-NULL
> ambiguous parameter.
>
> Test case included.
>
> Reported-by: Igor Mammedov <imammedo@redhat.com>
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>
> Eduardo Habkost (2):
> tests: Test case for object_resolve_path*()
I'm queueing patch 1/2 on my machine-next tree. I will wait a
little longer for additional feedback on patch 2/2 before merging
it.
> qom: Fix ambiguous path detection when ambiguous=NULL
>
> qom/object.c | 17 ++++++++---------
> tests/check-qom-proplist.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 52 insertions(+), 9 deletions(-)
>
> --
> 2.9.4
>
>
--
Eduardo
On 10/07/2017 20:23, Eduardo Habkost wrote:
> On Fri, Jul 07, 2017 at 06:30:50PM -0300, Eduardo Habkost wrote:
>> object_resolve_path*() ambiguous path detection breaks when
>> ambiguous==NULL and the object tree have 3 objects of the same type and
>> only 2 of them are under the same parent. e.g.:
>>
>> /container/obj1 (TYPE_FOO)
>> /container/obj2 (TYPE_FOO)
>> /obj2 (TYPE_FOO)
>>
>> With the above tree, object_resolve_path_type("", TYPE_FOO, NULL) will
>> incorrectly return /obj2, because the search inside "/container" will
>> return NULL, and the match at "/obj2" won't be detected as ambiguous.
>>
>> Fix that by always calling object_resolve_partial_path() with a non-NULL
>> ambiguous parameter.
>>
>> Test case included.
>>
>> Reported-by: Igor Mammedov <imammedo@redhat.com>
>> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>>
>> Eduardo Habkost (2):
>> tests: Test case for object_resolve_path*()
>
> I'm queueing patch 1/2 on my machine-next tree. I will wait a
> little longer for additional feedback on patch 2/2 before merging
> it.
Please apply both (with or without fixup, it's fine either way).
Paolo
>> qom: Fix ambiguous path detection when ambiguous=NULL
>>
>> qom/object.c | 17 ++++++++---------
>> tests/check-qom-proplist.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 52 insertions(+), 9 deletions(-)
>>
>> --
>> 2.9.4
>>
>>
>
© 2016 - 2025 Red Hat, Inc.