summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-14 22:00:47 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-14 22:01:08 +0100
commit61f993a096adee992be9b5333f6c0090440f00ed (patch)
tree75b3e476e7178f6bd8731ac78cfebfe9581fc606
parentbf925559c36fb0f45e8a11a3280ba7487d3e5ce5 (diff)
downloadrspamd-61f993a096adee992be9b5333f6c0090440f00ed.tar.gz
rspamd-61f993a096adee992be9b5333f6c0090440f00ed.zip
Fix broken '_SC_GETPW_R_SIZE_MAX' on FreeBSD
-rw-r--r--src/libutil/addr.c11
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) {