On Tue, Oct 14, 2003 at 09:52:16AM +0200, Stefan Kaltenbrunner wrote: > There seems to be a problem with the new TCPAddr support in the latest > snapshots - setting TCPSocket without setting TCPAddr (happens for > example when upgrading from an older version) "reliably" segfaults upon > startup on my system (Debian Testing/x86).
Yeah I get the same here, try the attached patch which should resolve that particular problem. -- Damien
diff -Nru clamav-devel-20031014.vanilla/clamd/tcpserver.c
clamav-devel-20031014/clamd/tcpserver.c
--- clamav-devel-20031014.vanilla/clamd/tcpserver.c 2003-09-29 21:44:52.000000000
+1000
+++ clamav-devel-20031014/clamd/tcpserver.c 2003-10-15 08:49:56.000000000 +1000
@@ -35,16 +35,16 @@
struct sockaddr_in server;
int sockfd, backlog;
struct cfgstruct *cpt;
+ struct cfgstruct *taddr;
char *estr;
- const char *taddr;
memset((char *) &server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(cfgopt(copt, "TCPSocket")->numarg);
- taddr = cfgopt(copt, "TCPAddr")->strarg;
- if ( taddr != NULL && *taddr )
+
+ if (taddr = cfgopt(copt, "TCPAddr"))
{
- server.sin_addr.s_addr = inet_addr( taddr );
+ server.sin_addr.s_addr = inet_addr( taddr->strarg );
}else
{
server.sin_addr.s_addr = INADDR_ANY;
@@ -64,8 +64,8 @@
logg("!bind() error: %s\n", estr);
exit(1);
} else {
- if ( taddr != NULL && *taddr )
- logg("Bound to address %s on port %d\n", taddr, cfgopt(copt,
"TCPSocket")->numarg);
+ if ( taddr != NULL && *taddr->strarg )
+ logg("Bound to address %s on port %d\n", taddr->strarg, cfgopt(copt,
"TCPSocket")->numarg);
else
logg("Bound to port %d\n", cfgopt(copt, "TCPSocket")->numarg);
}
pgp00000.pgp
Description: PGP signature
