From: Timo Sirainen Date: Sun, 22 Sep 2013 04:24:26 +0000 (+0300) Subject: i_getpw*(): Added OpenBSD workaround. X-Git-Tag: 2.2.6~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=835f2fce0430781f262efd9f1e09c960d2e1c37a;p=thirdparty%2Fdovecot%2Fcore.git i_getpw*(): Added OpenBSD workaround. --- diff --git a/src/lib/ipwd.c b/src/lib/ipwd.c index e5dfc66880..68c6b02fda 100644 --- a/src/lib/ipwd.c +++ b/src/lib/ipwd.c @@ -50,6 +50,11 @@ int i_getpwnam(const char *name, struct passwd *pwd_r) do { pw_init(); errno = getpwnam_r(name, pwd_r, pwbuf, pwbuf_size, &result); +#ifdef __OpenBSD__ + /* OpenBSD returns 1 for all errors, assume it's ERANGE */ + if (errno == 1) + errno = ERANGE; +#endif } while (errno == ERANGE); if (result != NULL) return 1; @@ -68,6 +73,11 @@ int i_getpwuid(uid_t uid, struct passwd *pwd_r) do { pw_init(); errno = getpwuid_r(uid, pwd_r, pwbuf, pwbuf_size, &result); +#ifdef __OpenBSD__ + /* OpenBSD returns 1 for all errors, assume it's ERANGE */ + if (errno == 1) + errno = ERANGE; +#endif } while (errno == ERANGE); if (result != NULL) return 1;