]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
* Allow binds to INADDR_ANY if bind_sock is *:port
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 29 Apr 2009 13:24:00 +0000 (17:24 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 29 Apr 2009 13:24:00 +0000 (17:24 +0400)
src/cfg_file.l
src/cfg_utils.c
src/util.c

index ebabd3e0a9a630e52f8fa3fe135f95c2f18efe6c..29ca9aef79a398c0e81c6f5f0df73d782f2b04b3 100644 (file)
@@ -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;
index 4907ce64c5a0bf9a47f57cb1ebd2bb8df491febe..79fabdb507a69e50cb086075140af4542b9944ea 100644 (file)
@@ -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) {
index bedb4114d1f317d2376263ddb405e1554701a563..19afe0611fa4fffb39437fa932625c82074005c4 100644 (file)
@@ -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);