In https://bugs.gentoo.org/667118 Reuben Farrelly
noticed that running
# doveadm user '*'
causes auth daemon to generate errors like:
auth-worker(3585): Error: getpwent() failed: Invalid argument
This happens because on successful call getpwent()
now sets errno=EINVAL starting from glibc-2.28.
See https://sourceware.org/PR16004 for details.
The fix is to reset 'errno' before 'getpwent()' is called.
Reported-by: Reuben Farrelly
Bug: https://bugs.gentoo.org/667118
Bug: https://sourceware.org/PR16004
Original-Author: Sergei Trofimovich <slyfox@gentoo.org>
return;
}
+ /* reset errno since it might have been set when we got here */
errno = 0;
while ((pw = getpwent()) != NULL) {
if (passwd_iterate_want_pw(pw, set)) {
_ctx->callback(pw->pw_name, _ctx->context);
return;
}
+ /* getpwent might set errno to something even if it
+ returns non-NULL. */
+ errno = 0;
}
if (errno != 0) {
i_error("getpwent() failed: %m");