Re: [PATCH] nodedevmdevctltest: Fix two memleaks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Michal,
thanks for fixing this.
Reviewed-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx>

On 2/26/24 13:22, Michal Privoznik wrote:
There are two memleaks inside of nodedevmdevctltest:

1) In the testCommandDryRunCallback() - when appending lines to
    stdinbuf the pointer is overwritten without freeing the old
    memory it pointed to.

2) In testMdevctlModify() the livecmd variable is reused and
    since its marked as g_autoptr() the first use leaks.

Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
  tests/nodedevmdevctltest.c | 14 +++++++++-----
  1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tests/nodedevmdevctltest.c b/tests/nodedevmdevctltest.c
index de688c982e..827036fa74 100644
--- a/tests/nodedevmdevctltest.c
+++ b/tests/nodedevmdevctltest.c
@@ -33,10 +33,13 @@ testCommandDryRunCallback(const char *const*args G_GNUC_UNUSED,
  {
      char **stdinbuf = opaque;
- if (*stdinbuf)
-        *stdinbuf = g_strconcat(*stdinbuf, "\n", input, NULL);
-    else
+    if (*stdinbuf) {
+        char *new = g_strconcat(*stdinbuf, "\n", input, NULL);
+        VIR_FREE(*stdinbuf);
+        *stdinbuf = g_steal_pointer(&new);
+    } else {
          *stdinbuf = g_strdup(input);
+    }
  }
typedef virCommand * (*MdevctlCmdFunc)(virNodeDeviceDef *, char **, char **);
@@ -188,6 +191,7 @@ testMdevctlModify(const void *data G_GNUC_UNUSED)
      int ret = -1;
      g_autoptr(virCommand) definedcmd = NULL;
      g_autoptr(virCommand) livecmd = NULL;
+    g_autoptr(virCommand) livecmd_update = NULL;
      g_autoptr(virCommand) bothcmd = NULL;
      g_autofree char *errmsg = NULL;
      g_autofree char *stdinbuf = NULL;
@@ -222,10 +226,10 @@ testMdevctlModify(const void *data G_GNUC_UNUSED)
                                               &parser_callbacks, NULL, false)))
          goto cleanup;
- if (!(livecmd = nodeDeviceGetMdevctlModifyCommand(def_update, false, true, &errmsg)))
+    if (!(livecmd_update = nodeDeviceGetMdevctlModifyCommand(def_update, false, true, &errmsg)))
          goto cleanup;
- if (virCommandRun(livecmd, NULL) < 0)
+    if (virCommandRun(livecmd_update, NULL) < 0)
          goto cleanup;
if (!(livecmd = nodeDeviceGetMdevctlModifyCommand(def, false, true, &errmsg)))

--
Mit freundlichen Grüßen/Kind regards
   Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Wolfgang Wendt
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux