]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix yet another printf("%s", NULL) case
authorJohn Levon <john.levon@sun.com>
Fri, 30 Jan 2009 15:43:05 +0000 (15:43 +0000)
committerJohn Levon <john.levon@sun.com>
Fri, 30 Jan 2009 15:43:05 +0000 (15:43 +0000)
Fix getpwuid_r() usage
Fix virsh migrateuri handling

ChangeLog
src/libvirt.c
src/util.c
src/virsh.c

index d19c01e8c65adc8d8ae6ba037d15299098586648..5c0f62c0e794b583062eceabd68d169d550754b4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Jan 30 15:34:42 GMT 2009 John Levon <john.levon@sun.com>
+
+       * src/libvirt.c: Fix yet another printf("%s", NULL) case
+
+       * src/util.c: Fix getpwuid_r() usage
+
+       * src/virsh.c: Fix virsh migrateuri handling
+
 Thu Jan 29 23:01:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        Misc Xen driver crash/bug fixes
index 3b5bc2b998e1c12ae56c27c121b19c788bd46031..a9568604fad7fcb63c9b9b2456ff87c63a260093 100644 (file)
@@ -2691,7 +2691,7 @@ virDomainMigrate (virDomainPtr domain,
     char *dom_xml = NULL;
     int cookielen = 0, ret, version = 0;
     DEBUG("domain=%p, dconn=%p, flags=%lu, dname=%s, uri=%s, bandwidth=%lu",
-          domain, dconn, flags, dname, uri, bandwidth);
+          domain, dconn, flags, NULLSTR(dname), NULLSTR(uri), bandwidth);
 
     virResetLastError();
 
index beedc289a45ef2f008b6a510aa79c9b2388f5d2f..7c7fe3134c3cd9f0487b4e8ae8f2e2eded60d6e9 100644 (file)
@@ -1477,7 +1477,7 @@ char *virGetUserDirectory(virConnectPtr conn,
     char *strbuf;
     char *ret;
     struct passwd pwbuf;
-    struct passwd *pw;
+    struct passwd *pw = NULL;
     size_t strbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
 
     if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
@@ -1485,7 +1485,14 @@ char *virGetUserDirectory(virConnectPtr conn,
         return NULL;
     }
 
-    if (getpwuid_r(uid, &pwbuf, strbuf, strbuflen, &pw) != 0) {
+    /*
+     * From the manpage (terrifying but true):
+     *
+     * ERRORS
+     *  0 or ENOENT or ESRCH or EBADF or EPERM or ...
+     *        The given name or uid was not found.
+     */
+    if (getpwuid_r(uid, &pwbuf, strbuf, strbuflen, &pw) != 0 || pw == NULL) {
         virReportSystemError(conn, errno,
                              _("Failed to find user record for uid '%d'"),
                              uid);
index 2c46d51b9dbc6de0870abca46a5b3103d2fe627e..e6d434e34a359dacc903e54e0a5f733feb35c658 100644 (file)
@@ -2258,11 +2258,9 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
         goto done;
     }
 
-    migrateuri = vshCommandOptString (cmd, "migrateuri", &found);
-    if (!found) migrateuri = NULL;
+    migrateuri = vshCommandOptString (cmd, "migrateuri", NULL);
 
-    dname = vshCommandOptString (cmd, "dname", &found);
-    if (!found) migrateuri = dname;
+    dname = vshCommandOptString (cmd, "dname", NULL);
 
     if (vshCommandOptBool (cmd, "live"))
         flags |= VIR_MIGRATE_LIVE;