[Libguestfs] [PATCH] Fix error handling in 'zero' function.

Richard W.M. Jones rjones at redhat.com
Thu Nov 26 16:24:30 UTC 2009


The zero command is quite broken (along error paths).  You must
call reply_with_{,p}error along every error path.  This patch
fixes it.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://et.redhat.com/~rjones/libguestfs/
See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
-------------- next part --------------
>From 1a4c442a490f9ab0f5c9e3e8cb2dc6004d49d019 Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones at redhat.com>
Date: Thu, 26 Nov 2009 16:06:03 +0000
Subject: [PATCH] Fix error handling in 'zero' function.

---
 daemon/zero.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/daemon/zero.c b/daemon/zero.c
index 0ade242..4d06505 100644
--- a/daemon/zero.c
+++ b/daemon/zero.c
@@ -41,20 +41,17 @@ do_zero (const char *device)
 
   memset (buf, 0, sizeof buf);
 
-  int err = 0;
-  int saved_errno = 0;
   for (i = 0; i < 32; ++i)
     if (write (fd, buf, sizeof buf) != sizeof buf) {
-      saved_errno = errno;
-      err = -1;
+      reply_with_perror ("write: %s", device);
+      close (fd);
+      return -1;
     }
 
-  if (close (fd) && saved_errno == 0) {
-    saved_errno = errno;
-    err = -1;
+  if (close (fd) == -1) {
+    reply_with_perror ("close: %s", device);
+    return -1;
   }
 
-  if (saved_errno)
-    errno = saved_errno;
-  return err;
+  return 0;
 }
-- 
1.6.5.2



More information about the Libguestfs mailing list