From: Vsevolod Stakhov Date: Wed, 14 Oct 2015 21:00:47 +0000 (+0100) Subject: Fix broken '_SC_GETPW_R_SIZE_MAX' on FreeBSD X-Git-Tag: 1.0.6~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61f993a096adee992be9b5333f6c0090440f00ed;p=thirdparty%2Frspamd.git Fix broken '_SC_GETPW_R_SIZE_MAX' on FreeBSD --- diff --git a/src/libutil/addr.c b/src/libutil/addr.c index 5958e9e3e0..7d0d5fef9a 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -279,7 +279,7 @@ static gboolean rspamd_parse_unix_path (rspamd_inet_addr_t **target, const char *src) { gchar **tokens, **cur_tok, *p, *pwbuf; - gint pwlen; + glong pwlen; struct passwd pw, *ppw; struct group gr, *pgr; rspamd_inet_addr_t *addr; @@ -299,8 +299,15 @@ rspamd_parse_unix_path (rspamd_inet_addr_t **target, const char *src) addr->u.un->group = (gid_t)-1; cur_tok = &tokens[1]; +#ifdef _SC_GETPW_R_SIZE_MAX pwlen = sysconf (_SC_GETPW_R_SIZE_MAX); - g_assert (pwlen > 0); + if (pwlen <= 0) { + pwlen = 8192; + } +#else + pwlen = 8192; +#endif + pwbuf = g_alloca (pwlen); while (*cur_tok) {