[PATCH] esx: Do not return root objects in a lookup
Tim Wiederhake
twiederh at redhat.com
Mon Jan 24 08:30:55 UTC 2022
On Sat, 2022-01-22 at 22:54 +0100, Martin Kletzander wrote:
> The lookups in esx_vi work a bit differently that we are used to. The
> filters
> (travelsalSpec and selectSet) choose how to look up the objects, but
> given a
> root object the lookup lists all the objects of a requested type inside
> it as
> well as the root object itself. We then go through the results and
> find the one
> which has the same name as was requested. However in a case with
> nested folders
> of a same name this could break when the first returned object in the
> list is
> the parent folder as we'd select it only based on the name. To avoid
> this also
> add a check that the candidate we are trying to pick is not exactly the
> same
> object (reference) as the root object.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1643868
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/esx/esx_vi.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c
> index 6f964cc470d1..80ed6199e3ac 100644
> --- a/src/esx/esx_vi.c
> +++ b/src/esx/esx_vi.c
> @@ -4973,6 +4973,11 @@ esxVI_LookupManagedObjectHelper(esxVI_Context
> *ctx,
> candidate = candidate->_next) {
> name_candidate = NULL;
>
> + if (candidate->obj->_type == root->_type &&
> + g_strcmp0(candidate->obj->type, root->type) == 0 &&
> + g_strcmp0(candidate->obj->value, root->value) == 0)
> + continue;
> +
> if (esxVI_GetStringValue(candidate, "name",
> &name_candidate,
> esxVI_Occurrence_RequiredItem) <
> 0) {
> goto cleanup;
Reviewed-by: Tim Wiederhake <twiederh at redhat.com>
More information about the libvir-list
mailing list