summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cfg_file.l2
-rw-r--r--src/cfg_utils.c6
-rw-r--r--src/util.c2
3 files changed, 6 insertions, 4 deletions
diff --git a/src/cfg_file.l b/src/cfg_file.l
index ebabd3e0a..29ca9aef7 100644
--- a/src/cfg_file.l
+++ b/src/cfg_file.l
@@ -104,7 +104,7 @@ yes|YES|no|NO|[yY]|[nN] yylval.flag=parse_flag(yytext); return FLAG;
[0-9]+[sS]|[0-9]+[mM][sS] yylval.seconds=parse_seconds(yytext); return SECONDS;
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} yylval.string=strdup(yytext); return IPADDR;
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2} yylval.string=strdup(yytext); return IPNETWORK;
-[a-zA-Z0-9.-]+:[0-9]{1,5} yylval.string=strdup(yytext); return HOSTPORT;
+[*a-zA-Z0-9.-]+:[0-9]{1,5} yylval.string=strdup(yytext); return HOSTPORT;
[a-zA-Z<][a-zA-Z@+>_-]* yylval.string=strdup(yytext); return STRING;
\/[^/\n]+\/ yylval.string=strdup(yytext); return REGEXP;
[a-zA-Z0-9].[a-zA-Z0-9\/.-]+ yylval.string=strdup(yytext); return DOMAINNAME;
diff --git a/src/cfg_utils.c b/src/cfg_utils.c
index 4907ce64c..79fabdb50 100644
--- a/src/cfg_utils.c
+++ b/src/cfg_utils.c
@@ -167,8 +167,10 @@ parse_bind_line (struct config_file *cf, char *str, enum rspamd_cred_type type)
return 0;
}
}
-
- if (!inet_aton (cur_tok, addr)) {
+ if (strcmp (cur_tok, "*") == 0) {
+ *host = memory_pool_strdup (cf->cfg_pool, cur_tok);
+ addr->s_addr = htonl (INADDR_ANY);
+ } else if (!inet_aton (cur_tok, addr)) {
/* Try to call gethostbyname */
hent = gethostbyname (cur_tok);
if (hent == NULL) {
diff --git a/src/util.c b/src/util.c
index bedb4114d..19afe0611 100644
--- a/src/util.c
+++ b/src/util.c
@@ -144,7 +144,7 @@ make_unix_socket (const char *path, struct sockaddr_un *addr, gboolean is_server
size_t len = strlen (path);
int fd, s_error, r, optlen, serrno, on = 1;
- if (len > sizeof (addr->sun_path) - 1) return -1;
+ if (len > sizeof (addr->sun_path) - 1 || path == NULL) return -1;
#ifdef FREEBSD
addr->sun_len = sizeof (struct sockaddr_un);