Fix yet another printf("%s", NULL) case

Fix getpwuid_r() usage
Fix virsh migrateuri handling
This commit is contained in:
John Levon 2009-01-30 15:43:05 +00:00
parent 1c64dc76c1
commit 745c249a61
4 changed files with 20 additions and 7 deletions

View File

@ -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> Thu Jan 29 23:01:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
Misc Xen driver crash/bug fixes Misc Xen driver crash/bug fixes

View File

@ -2691,7 +2691,7 @@ virDomainMigrate (virDomainPtr domain,
char *dom_xml = NULL; char *dom_xml = NULL;
int cookielen = 0, ret, version = 0; int cookielen = 0, ret, version = 0;
DEBUG("domain=%p, dconn=%p, flags=%lu, dname=%s, uri=%s, bandwidth=%lu", 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(); virResetLastError();

View File

@ -1477,7 +1477,7 @@ char *virGetUserDirectory(virConnectPtr conn,
char *strbuf; char *strbuf;
char *ret; char *ret;
struct passwd pwbuf; struct passwd pwbuf;
struct passwd *pw; struct passwd *pw = NULL;
size_t strbuflen = sysconf(_SC_GETPW_R_SIZE_MAX); size_t strbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
if (VIR_ALLOC_N(strbuf, strbuflen) < 0) { if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
@ -1485,7 +1485,14 @@ char *virGetUserDirectory(virConnectPtr conn,
return NULL; 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, virReportSystemError(conn, errno,
_("Failed to find user record for uid '%d'"), _("Failed to find user record for uid '%d'"),
uid); uid);

View File

@ -2258,11 +2258,9 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
goto done; goto done;
} }
migrateuri = vshCommandOptString (cmd, "migrateuri", &found); migrateuri = vshCommandOptString (cmd, "migrateuri", NULL);
if (!found) migrateuri = NULL;
dname = vshCommandOptString (cmd, "dname", &found); dname = vshCommandOptString (cmd, "dname", NULL);
if (!found) migrateuri = dname;
if (vshCommandOptBool (cmd, "live")) if (vshCommandOptBool (cmd, "live"))
flags |= VIR_MIGRATE_LIVE; flags |= VIR_MIGRATE_LIVE;