Verified Commit cee8d5b0 authored by Mitsuru Kariya's avatar Mitsuru Kariya
Browse files

Fix memory leak in virDomainGetMetadata binding



virDomainGetMetadata returns a dynamically allocated char* that the
caller must free. The JNA binding incorrectly mapped it as String,
which reads the value but never frees the native memory. Changed to
CString, which automatically frees the native memory on toString(),
consistent with other similar bindings (e.g. virDomainGetXMLDesc,
virDomainGetOSType).

Signed-off-by: default avatarMitsuru Kariya <mitsuru.kariya@nttdata.com>
parent 6f66d91d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1458,7 +1458,7 @@ public class Domain {
     * @throws LibvirtException
     */
    public String getMetadata(int type, String uri, int flags) throws LibvirtException {
        return processError(libvirt.virDomainGetMetadata(vdp, type, uri, flags));
        return processError(libvirt.virDomainGetMetadata(vdp, type, uri, flags)).toString();
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -364,7 +364,7 @@ public interface Libvirt extends Library {
                             IntByReference nparams, int flags);
    NativeLong virDomainGetMaxMemory(DomainPointer virDomainPtr);
    int virDomainGetMaxVcpus(DomainPointer virDomainPtr);
    String virDomainGetMetadata(DomainPointer virDomainPtr, int type, String uri, int flags);
    CString virDomainGetMetadata(DomainPointer virDomainPtr, int type, String uri, int flags);
    String virDomainGetName(DomainPointer virDomainPtr);
    CString virDomainGetOSType(DomainPointer virDomainPtr);
    int virDomainGetSchedulerParameters(DomainPointer virDomainPtr,