diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-10-16 21:02:42 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-10-16 21:02:42 +0300 |
commit | 0c1763059c6d2032d7c538cfbdda9d63663165ba (patch) | |
tree | 2b0961d5cf3ac972fe9f67f22cfa6e8182728b74 | |
parent | 7dde2dad953812b8a17f0fd562d2fbf41c475bf3 (diff) | |
download | mailfromd-0c1763059c6d2032d7c538cfbdda9d63663165ba.tar.gz mailfromd-0c1763059c6d2032d7c538cfbdda9d63663165ba.tar.bz2 |
Be careful about undefined sun_path in struct sockaddr_un.
* gacopyz/gacopyz.c (gacopyz_handle_connection): Log unnamed
socket as [unnamed].
* src/builtin/vars.bi (set_milter_$1_address): Use empty string
if the socket is unnamed.
-rw-r--r-- | gacopyz/gacopyz.c | 14 | ||||
-rw-r--r-- | src/builtin/vars.bi | 9 |
2 files changed, 18 insertions, 5 deletions
diff --git a/gacopyz/gacopyz.c b/gacopyz/gacopyz.c index 54429c1b..81ad3fcc 100644 --- a/gacopyz/gacopyz.c +++ b/gacopyz/gacopyz.c @@ -1734,12 +1734,20 @@ gacopyz_handle_connection(gacopyz_conn_t conn) } switch (addr.sa.sa_family) { - case AF_UNIX: + case AF_UNIX: { + char *path; + + if (addrlen == sizeof (addr.sa.sa_family)) + path = "[unnamed]"; + else + path = addr.sunix.sun_path; if (GACOPYZ_CONN_LOG_MATCH(conn, SMI_LOG_INFO)) gacopyz_log(SMI_LOG_INFO, - _("connect from socket")); + _("connect from socket %s"), + path); break; - + } + case AF_INET: if (GACOPYZ_CONN_LOG_MATCH(conn, SMI_LOG_INFO)) gacopyz_log(SMI_LOG_INFO, _("connect from %s:%u"), diff --git a/src/builtin/vars.bi b/src/builtin/vars.bi index d292e8fd..409363b3 100644 --- a/src/builtin/vars.bi +++ b/src/builtin/vars.bi @@ -48,6 +48,8 @@ void set_milter_$1_address(eval_environ_t env, milter_sockaddr_t *addr, socklen_t len) { + char *path; + switch (addr->sa.sa_family) { case PF_INET: MF_VAR_REF(milter_$1_family, MFAM_INET); @@ -57,8 +59,11 @@ set_milter_$1_address(eval_environ_t env, milter_sockaddr_t *addr, case PF_UNIX: MF_VAR_REF(milter_$1_family, MFAM_UNIX); - MF_VAR_SET_STRING(milter_$1_address, - addr->sunix.sun_path); + if (len == sizeof (addr->sa.sa_family)) + path = ""; + else + path = addr->sunix.sun_path; + MF_VAR_SET_STRING(milter_$1_address, path); break; default: |