[PATCH 1/2] qemu_namespace: Don't leak memory in qemuDomainGetPreservedMounts()

Ján Tomko jtomko at redhat.com
Tue Nov 1 10:44:39 UTC 2022


On a Monday in 2022, Michal Privoznik wrote:
>The aim of qemuDomainGetPreservedMounts() is to get a list of
>filesystems mounted under /dev and optionally generate a path for
>each one where they are moved temporarily when building the
>namespace. And the function tries to be a bit clever about it.
>For instance, if /dev/shm mount point exists, there's no need to
>consider /dev/shm/a nor /dev/shm/b as preserving just 'top level'
>/dev/shm gives the same result. To achieve this, the function
>iterates over the list of filesystem as returned by
>virFileGetMountSubtree() and removes the nested ones. However, it
>does so in a bit clumsy way: plain VIR_DELETE_ELEMENT() is used
>without freeing the string itself. Therefore, if all three
>aforementioned example paths appeared on the list, /dev/shm/a and
>/dev/shm/b strings would be leaked.
>
>And when I think about it more, there's no real need to shrink
>the array down (realloc()). It's going to be free()-d when
>returning from the function. Switch to
>VIR_DELETE_ELEMENT_INPLACE() then.
>
>Fixes: cdd9205dfffa3aaed935446a41f0d2dd1357c268
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> src/qemu/qemu_namespace.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>

Reviewed-by: Ján Tomko <jtomko at redhat.com>

Jano


More information about the libvir-list mailing list