aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2010-10-16 21:02:42 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2010-10-16 21:02:42 +0300
commit0c1763059c6d2032d7c538cfbdda9d63663165ba (patch)
tree2b0961d5cf3ac972fe9f67f22cfa6e8182728b74
parent7dde2dad953812b8a17f0fd562d2fbf41c475bf3 (diff)
downloadmailfromd-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.c14
-rw-r--r--src/builtin/vars.bi9
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:

Return to:

Send suggestions and report system problems to the System administrator.