Re: [Qemu-devel] [PATCH] do not check pointers after dereferencing them

2013-06-03 Thread Stefan Hajnoczi
On Fri, May 31, 2013 at 06:46:21AM -0600, Eric Blake wrote:
 On 05/31/2013 06:00 AM, Paolo Bonzini wrote:
  Two instances, both spotted by Coverity.  In one, two blocks were
  swapped.  In the other, the check is not needed anymore.
  
  Cc: qemu-sta...@nongnu.org
  Cc: qemu-triv...@nongnu.org
  Signed-off-by: Paolo Bonzini pbonz...@redhat.com
  ---
   monitor.c |  2 +-
   savevm.c  | 10 +-
   2 files changed, 6 insertions(+), 6 deletions(-)
 
 This version of the savevm.c fix is nicer than Stefan's attempt:
 https://lists.gnu.org/archive/html/qemu-devel/2013-05/msg04506.html
 
 Reviewed-by: Eric Blake ebl...@redhat.com

I'll drop mine.  I didn't dare to swap the blocks just in case something
dependend on doing the popen() and bailing out afterwards, but it's hard
to imagine that.

Stefan



[Qemu-devel] [PATCH] do not check pointers after dereferencing them

2013-05-31 Thread Paolo Bonzini
Two instances, both spotted by Coverity.  In one, two blocks were
swapped.  In the other, the check is not needed anymore.

Cc: qemu-sta...@nongnu.org
Cc: qemu-triv...@nongnu.org
Signed-off-by: Paolo Bonzini pbonz...@redhat.com
---
 monitor.c |  2 +-
 savevm.c  | 10 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/monitor.c b/monitor.c
index 6ce2a4e..eefc7f0 100644
--- a/monitor.c
+++ b/monitor.c
@@ -280,7 +280,7 @@ void monitor_flush(Monitor *mon)
 buf = qstring_get_str(mon-outbuf);
 len = qstring_get_length(mon-outbuf);
 
-if (mon  len  !mon-mux_out) {
+if (len  !mon-mux_out) {
 rc = qemu_chr_fe_write(mon-chr, (const uint8_t *) buf, len);
 if (rc == len) {
 /* all flushed */
diff --git a/savevm.c b/savevm.c
index 31dcce9..4e0fab6 100644
--- a/savevm.c
+++ b/savevm.c
@@ -322,16 +322,16 @@ QEMUFile *qemu_popen_cmd(const char *command, const char 
*mode)
 FILE *stdio_file;
 QEMUFileStdio *s;
 
-stdio_file = popen(command, mode);
-if (stdio_file == NULL) {
-return NULL;
-}
-
 if (mode == NULL || (mode[0] != 'r'  mode[0] != 'w') || mode[1] != 0) {
 fprintf(stderr, qemu_popen: Argument validity check failed\n);
 return NULL;
 }
 
+stdio_file = popen(command, mode);
+if (stdio_file == NULL) {
+return NULL;
+}
+
 s = g_malloc0(sizeof(QEMUFileStdio));
 
 s-stdio_file = stdio_file;
-- 
1.8.1.4




Re: [Qemu-devel] [PATCH] do not check pointers after dereferencing them

2013-05-31 Thread Eric Blake
On 05/31/2013 06:00 AM, Paolo Bonzini wrote:
 Two instances, both spotted by Coverity.  In one, two blocks were
 swapped.  In the other, the check is not needed anymore.
 
 Cc: qemu-sta...@nongnu.org
 Cc: qemu-triv...@nongnu.org
 Signed-off-by: Paolo Bonzini pbonz...@redhat.com
 ---
  monitor.c |  2 +-
  savevm.c  | 10 +-
  2 files changed, 6 insertions(+), 6 deletions(-)

This version of the savevm.c fix is nicer than Stefan's attempt:
https://lists.gnu.org/archive/html/qemu-devel/2013-05/msg04506.html

Reviewed-by: Eric Blake ebl...@redhat.com

 +++ b/savevm.c
 @@ -322,16 +322,16 @@ QEMUFile *qemu_popen_cmd(const char *command, const 
 char *mode)
  FILE *stdio_file;
  QEMUFileStdio *s;
  
 -stdio_file = popen(command, mode);
 -if (stdio_file == NULL) {
 -return NULL;
 -}
 -
  if (mode == NULL || (mode[0] != 'r'  mode[0] != 'w') || mode[1] != 0) {
  fprintf(stderr, qemu_popen: Argument validity check failed\n);
  return NULL;
  }
  
 +stdio_file = popen(command, mode);
 +if (stdio_file == NULL) {
 +return NULL;
 +}
 +
  s = g_malloc0(sizeof(QEMUFileStdio));
  
  s-stdio_file = stdio_file;
 

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature