]> xenbits.xensource.com Git - libvirt.git/commitdiff
vircommand: Ensure buffers are NULL-terminated
authorAndrea Bolognani <abologna@redhat.com>
Tue, 5 Feb 2019 13:30:42 +0000 (14:30 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 19 Feb 2019 14:58:59 +0000 (15:58 +0100)
The memory allocated by VIR_REALLOC_N() is uninitialized,
which means it's not possible to figure out whether any
output was produced at all after the fact.

Since we don't care about the previous contents of buffers,
if any, use VIR_FREE() followed by VIR_ALLOC_N() instead.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/util/vircommand.c

index d965068369ba3e525da0cb916ea88562e0b2c03a..3d533c68a6cdeabafaa86bb168190d81cf34d018 100644 (file)
@@ -2055,12 +2055,14 @@ virCommandProcessIO(virCommandPtr cmd)
      * results accumulated over a prior run of the same command.  */
     if (cmd->outbuf) {
         outfd = cmd->outfd;
-        if (VIR_REALLOC_N(*cmd->outbuf, 1) < 0)
+        VIR_FREE(*cmd->outbuf);
+        if (VIR_ALLOC_N(*cmd->outbuf, 1) < 0)
             ret = -1;
     }
     if (cmd->errbuf) {
         errfd = cmd->errfd;
-        if (VIR_REALLOC_N(*cmd->errbuf, 1) < 0)
+        VIR_FREE(*cmd->errbuf);
+        if (VIR_ALLOC_N(*cmd->errbuf, 1) < 0)
             ret = -1;
     }
     if (ret == -1)