From 745c249a616b0568789c2ec156f27a224cc30a5b Mon Sep 17 00:00:00 2001 From: John Levon Date: Fri, 30 Jan 2009 15:43:05 +0000 Subject: [PATCH] Fix yet another printf("%s", NULL) case Fix getpwuid_r() usage Fix virsh migrateuri handling --- ChangeLog | 8 ++++++++ src/libvirt.c | 2 +- src/util.c | 11 +++++++++-- src/virsh.c | 6 ++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index d19c01e8c6..5c0f62c0e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Fri Jan 30 15:34:42 GMT 2009 John Levon + + * 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 Misc Xen driver crash/bug fixes diff --git a/src/libvirt.c b/src/libvirt.c index 3b5bc2b998..a9568604fa 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -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(); diff --git a/src/util.c b/src/util.c index beedc289a4..7c7fe3134c 100644 --- a/src/util.c +++ b/src/util.c @@ -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); diff --git a/src/virsh.c b/src/virsh.c index 2c46d51b9d..e6d434e34a 100644 --- a/src/virsh.c +++ b/src/virsh.c @@ -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; -- 2.47.2