+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
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();
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) {
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);
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;