[libvirt] [PATCH] virGet{User, Group}Ent() don't say success on fail

Doug Goldstein cardoe at cardoe.com
Wed Sep 4 16:48:42 UTC 2013


When virGetUserEnt() and virGetGroupEnt() fail due to the uid or gid not
existing on the machine they'll print a message like:

$ virsh -c vbox:///session list
error: failed to connect to the hypervisor
error: Failed to find user record for uid '32655': Success

The success at the end is a bit confusing. This changes it to:

$ virsh -c vbox:///session list
error: failed to connect to the hypervisor
error: Failed to find user record for uid '32655'
---
 src/util/virutil.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/util/virutil.c b/src/util/virutil.c
index 34f5998..39d4717 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -692,11 +692,16 @@ virGetUserEnt(uid_t uid, char **name, gid_t *group, char **dir)
         if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
             goto cleanup;
     }
-    if (rc != 0 || pw == NULL) {
+    if (rc != 0) {
         virReportSystemError(rc,
                              _("Failed to find user record for uid '%u'"),
                              (unsigned int) uid);
         goto cleanup;
+    } else if (pw == NULL) {
+        virReportError(VIR_ERR_SYSTEM_ERROR,
+                       _("Failed to find user record for uid '%u'"),
+                       (unsigned int) uid);
+        goto cleanup;
     }
 
     if (name && VIR_STRDUP(*name, pw->pw_name) < 0)
@@ -746,9 +751,16 @@ static char *virGetGroupEnt(gid_t gid)
         }
     }
     if (rc != 0 || gr == NULL) {
-        virReportSystemError(rc,
-                             _("Failed to find group record for gid '%u'"),
-                             (unsigned int) gid);
+        if (rc != 0) {
+            virReportSystemError(rc,
+                                 _("Failed to find group record for gid '%u'"),
+                                 (unsigned int) gid);
+        } else {
+            virReportError(VIR_ERR_SYSTEM_ERROR,
+                           _("Failed to find group record for gid '%u'"),
+                           (unsigned int) gid);
+        }
+
         VIR_FREE(strbuf);
         return NULL;
     }
-- 
1.8.1.5




More information about the libvir-list mailing list