From 46e4d866d4aefaa1f5a82fc471966a364da9a49a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 29 Apr 2009 17:24:00 +0400 Subject: [PATCH] * Allow binds to INADDR_ANY if bind_sock is *:port --- src/cfg_file.l | 2 +- src/cfg_utils.c | 6 ++++-- src/util.c | 2 +- 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); -- 2.39.5