From: Timo Sirainen Date: Thu, 18 Dec 2008 16:11:21 +0000 (+0200) Subject: Fix to previous change: Don't lose errno during uid/gid naming. X-Git-Tag: 1.2.beta1~177 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b6afd653db20e6939bc392e1a8597e29e49f815a;p=thirdparty%2Fdovecot%2Fcore.git Fix to previous change: Don't lose errno during uid/gid naming. --HG-- branch : HEAD --- diff --git a/src/lib/restrict-access.c b/src/lib/restrict-access.c index c2f140c82b..1b4aca8678 100644 --- a/src/lib/restrict-access.c +++ b/src/lib/restrict-access.c @@ -53,23 +53,31 @@ void restrict_access_set_env(const char *user, uid_t uid, static const char *get_uid_str(uid_t uid) { const struct passwd *pw; + const char *ret; + int old_errno = errno; pw = getpwuid(uid); if (pw == NULL) - return dec2str(uid); + ret = dec2str(uid); else - return t_strdup_printf("%s(%s)", dec2str(uid), pw->pw_name); + ret = t_strdup_printf("%s(%s)", dec2str(uid), pw->pw_name); + errno = old_errno; + return ret; } static const char *get_gid_str(gid_t gid) { const struct group *group; + const char *ret; + int old_errno = errno; group = getgrgid(gid); if (group == NULL) - return dec2str(gid); + ret = dec2str(gid); else - return t_strdup_printf("%s(%s)", dec2str(gid), group->gr_name); + ret = t_strdup_printf("%s(%s)", dec2str(gid), group->gr_name); + errno = old_errno; + return ret; } static void restrict_init_groups(gid_t primary_gid, gid_t privileged_gid)