diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-14 22:00:47 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-14 22:01:08 +0100 |
commit | 61f993a096adee992be9b5333f6c0090440f00ed (patch) | |
tree | 75b3e476e7178f6bd8731ac78cfebfe9581fc606 | |
parent | bf925559c36fb0f45e8a11a3280ba7487d3e5ce5 (diff) | |
download | rspamd-61f993a096adee992be9b5333f6c0090440f00ed.tar.gz rspamd-61f993a096adee992be9b5333f6c0090440f00ed.zip |
Fix broken '_SC_GETPW_R_SIZE_MAX' on FreeBSD
-rw-r--r-- | src/libutil/addr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libutil/addr.c b/src/libutil/addr.c index 5958e9e3e..7d0d5fef9 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) { |