Find attached a patch to add a TCPAddr option
to clamd.
This allows one to specify the listening address
rather than having the daemon listen on all addresses.
Hope this proves useful enough to include in the main release.
--
Bernard Quatermass.
diff -ur clamav-0.60-orig/clamd/cfgfile.c clamav-0.60/clamd/cfgfile.c
--- clamav-0.60-orig/clamd/cfgfile.c Sat Jun 21 01:21:37 2003
+++ clamav-0.60/clamd/cfgfile.c Wed Sep 24 21:46:33 2003
@@ -51,6 +51,7 @@
{"ArchiveMaxFiles", OPT_NUM},
{"ArchiveLimitMemoryUsage", OPT_NOARG},
{"DataDirectory", OPT_STR},
+ {"TCPAddr", OPT_STR},
{"TCPSocket", OPT_NUM},
{"LocalSocket", OPT_STR},
{"MaxConnectionQueueLength", OPT_NUM},
diff -ur clamav-0.60-orig/clamd/tcpserver.c clamav-0.60/clamd/tcpserver.c
--- clamav-0.60-orig/clamd/tcpserver.c Sun May 21 22:53:00 2000
+++ clamav-0.60/clamd/tcpserver.c Wed Sep 24 22:03:29 2003
@@ -36,11 +36,19 @@
int sockfd, backlog;
struct cfgstruct *cpt;
char *estr;
+ const char *taddr;
memset((char *) &server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(cfgopt(copt, "TCPSocket")->numarg);
- server.sin_addr.s_addr = INADDR_ANY;
+ taddr = cfgopt(copt, "TCPAddr")->strarg;
+ if ( taddr != NULL && *taddr )
+ {
+ server.sin_addr.s_addr = inet_addr( taddr );
+ }else
+ {
+ server.sin_addr.s_addr = INADDR_ANY;
+ }
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
@@ -56,7 +64,14 @@
logg("!bind() error: %s\n", estr);
exit(1);
} else
- logg("Binded to port %d\n", cfgopt(copt, "TCPSocket")->numarg);
+ {
+ if ( taddr != NULL && *taddr )
+ logg("Bound to address %s on port %d\n",
+ cfgopt(copt, "TCPSocket")->strarg,
+ cfgopt(copt, "TCPSocket")->numarg);
+ else
+ logg("Bound to port %d\n", cfgopt(copt, "TCPSocket")->numarg);
+ }
if((cpt = cfgopt(copt, "MaxConnectionQueueLength")))
backlog = cpt->numarg;
diff -ur clamav-0.60-orig/etc/clamav.conf clamav-0.60/etc/clamav.conf
--- clamav-0.60-orig/etc/clamav.conf Sat Jun 21 01:21:48 2003
+++ clamav-0.60/etc/clamav.conf Wed Sep 24 22:05:27 2003
@@ -52,6 +52,12 @@
# which is only accessible for a user running daemon.
LocalSocket /tmp/clamd
+# TCP address.
+# By default we bind to INADDR_ANY, probably not wise.
+# Enable the following to provide some degree of protection
+# from the outside world.
+#TCPAddr 127.0.0.1
+
# TCP port address.
#TCPSocket 3310
Only in clamav-0.60: target.h