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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list