[libvirt] [PATCH 7/8] qemu: Resolve Coverity BAD_SIZEOF

John Ferlan jferlan at redhat.com
Mon Sep 15 16:29:19 UTC 2014



On 09/15/2014 04:09 AM, Peter Krempa wrote:
> On 09/13/14 15:27, John Ferlan wrote:
>> Coverity complains about the calculation of the buf & len within
>> the PROBE macro.  So to quiet things down, do the calculation prior
>> to usage in either write() or qemuMonitorIOWriteWithFD() calls and
>> then have the PROBE use the calculated values - which works.
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>>  src/qemu/qemu_monitor.c | 18 +++++++-----------
>>  1 file changed, 7 insertions(+), 11 deletions(-)
>>

A build failure on a local jenkins server resulted in the following
being pushed :

commit c29cad67328bb8845c4396b85884211124ea1e2d
Author: John Ferlan <jferlan at redhat.com>
Date:   Mon Sep 15 11:37:20 2014 -0400

    qemu: Fix build breaker on printf directive

    %zu for size_t not %lu

diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 89446d7..3a32a4f 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -499,7 +499,7 @@ qemuMonitorIOWrite(qemuMonitorPtr mon)
         done = qemuMonitorIOWriteWithFD(mon, buf, len, mon->msg->txFD);

     PROBE(QEMU_MONITOR_IO_WRITE,
-          "mon=%p buf=%s len=%lu ret=%d errno=%d",
+          "mon=%p buf=%s len=%zu ret=%d errno=%d",
           mon, buf, len, done, errno);

     if (mon->msg->txFD != -1) {


>> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
>> index 6059133..80c6ef8 100644
>> --- a/src/qemu/qemu_monitor.c
>> +++ b/src/qemu/qemu_monitor.c
>> @@ -478,6 +478,8 @@ static int
>>  qemuMonitorIOWrite(qemuMonitorPtr mon)
>>  {
>>      int done;
>> +    char *buf;
>> +    int len;
> 
> len should be "size_t"
> 
>>  
>>      /* If no active message, or fully transmitted, the no-op */
>>      if (!mon->msg || mon->msg->txOffset == mon->msg->txLength)
>> @@ -489,22 +491,16 @@ qemuMonitorIOWrite(qemuMonitorPtr mon)
>>          return -1;
>>      }
>>  
>> +    buf = mon->msg->txBuffer + mon->msg->txOffset;
>> +    len = mon->msg->txLength - mon->msg->txOffset;
>>      if (mon->msg->txFD == -1)
>> -        done = write(mon->fd,
>> -                     mon->msg->txBuffer + mon->msg->txOffset,
>> -                     mon->msg->txLength - mon->msg->txOffset);
>> +        done = write(mon->fd, buf, len);
>>      else
>> -        done = qemuMonitorIOWriteWithFD(mon,
>> -                                        mon->msg->txBuffer + mon->msg->txOffset,
>> -                                        mon->msg->txLength - mon->msg->txOffset,
>> -                                        mon->msg->txFD);
>> +        done = qemuMonitorIOWriteWithFD(mon, buf, len, mon->msg->txFD);
>>  
>>      PROBE(QEMU_MONITOR_IO_WRITE,
>>            "mon=%p buf=%s len=%d ret=%d errno=%d",
>> -          mon,
>> -          mon->msg->txBuffer + mon->msg->txOffset,
>> -          mon->msg->txLength - mon->msg->txOffset,
>> -          done, errno);
>> +          mon, buf, len, done, errno);
>>  
>>      if (mon->msg->txFD != -1) {
>>          PROBE(QEMU_MONITOR_IO_SEND_FD,
>>
> 
> ACK with the type corrected.
> 
> Peter
> 




More information about the libvir-list mailing list