diff -rc clamav-0.93-orig/clamd/scanner.c clamav-0.93/clamd/scanner.c *** clamav-0.93-orig/clamd/scanner.c 2008-03-06 12:41:03.000000000 -0600 --- clamav-0.93/clamd/scanner.c 2008-04-16 16:08:34.000000000 -0600 *************** *** 382,388 **** --- 382,391 ---- short bound = 0, rnd_port_first = 1; const char *virname; char buff[FILEBUFF]; + char peer_addr[32]; struct sockaddr_in server; + struct sockaddr_in peer; + socklen_t addrlen; struct hostent he; const struct cfgstruct *cpt; char *tmpname; *************** *** 464,484 **** return -1; } ! if((acceptd = accept(sockfd, NULL, NULL)) == -1) { close(sockfd); mdprintf(odesc, "accept() ERROR\n"); logg("!ScanStream %u: accept() failed.\n", port); return -1; } ! logg("*Accepted connection on port %u, fd %d\n", port, acceptd); if(cli_gentempfd(NULL, &tmpname, &tmpd)) { shutdown(sockfd, 2); close(sockfd); close(acceptd); mdprintf(odesc, "cli_gentempfd() failed. ERROR\n"); ! logg("!ScanStream %u: Can't create temporary file.\n", port); return -1; } --- 467,489 ---- return -1; } ! addrlen = sizeof(peer); ! if((acceptd = accept(sockfd, (struct sockaddr *)&peer, &addrlen)) == -1) { close(sockfd); mdprintf(odesc, "accept() ERROR\n"); logg("!ScanStream %u: accept() failed.\n", port); return -1; } ! sprintf (peer_addr, "%s", inet_ntoa(peer.sin_addr)); ! logg("*Accepted connection from %s on port %u, fd %d\n", peer_addr, port, acceptd); if(cli_gentempfd(NULL, &tmpname, &tmpd)) { shutdown(sockfd, 2); close(sockfd); close(acceptd); mdprintf(odesc, "cli_gentempfd() failed. ERROR\n"); ! logg("!ScanStream %s %u: Can't create temporary file.\n", peer_addr, port); return -1; } *************** *** 497,503 **** closesocket(sockfd); closesocket(acceptd); mdprintf(odesc, "Temporary file -> write ERROR\n"); ! logg("!ScanStream %u: Can't write to temporary file.\n", port); close(tmpd); if(!cfgopt(copt, "LeaveTemporaryFiles")->enabled) unlink(tmpname); --- 502,508 ---- closesocket(sockfd); closesocket(acceptd); mdprintf(odesc, "Temporary file -> write ERROR\n"); ! logg("!ScanStream %s %u: Can't write to temporary file.\n", peer_addr, port); close(tmpd); if(!cfgopt(copt, "LeaveTemporaryFiles")->enabled) unlink(tmpname); *************** *** 509,515 **** btread = (maxsize - size); /* only read up to max */ if(btread <= 0) { ! logg("^ScanStream %u: Size limit reached (max: %lu)\n", port, maxsize); break; /* Scan what we have */ } } --- 514,520 ---- btread = (maxsize - size); /* only read up to max */ if(btread <= 0) { ! logg("^ScanStream %s %u: Size limit reached (max: %lu)\n", peer_addr, port, maxsize); break; /* Scan what we have */ } } *************** *** 518,528 **** switch(retval) { case 0: /* timeout */ mdprintf(odesc, "read timeout ERROR\n"); ! logg("!ScanStream %u: read timeout.\n", port); break; case -1: mdprintf(odesc, "read poll ERROR\n"); ! logg("!ScanStream %u: read poll failed.\n", port); break; } --- 523,533 ---- switch(retval) { case 0: /* timeout */ mdprintf(odesc, "read timeout ERROR\n"); ! logg("!ScanStream %s %u: read timeout.\n", peer_addr, port); break; case -1: mdprintf(odesc, "read poll ERROR\n"); ! logg("!ScanStream %s %u: read poll failed.\n", peer_addr, port); break; } *************** *** 542,558 **** if(ret == CL_VIRUS) { mdprintf(odesc, "stream: %s FOUND\n", virname); ! logg("stream %u: %s FOUND\n", port, virname); virusaction("stream", virname, copt); } else if(ret != CL_CLEAN) { if(retval == 1) { mdprintf(odesc, "stream: %s ERROR\n", cl_strerror(ret)); ! logg("stream %u: %s ERROR\n", port, cl_strerror(ret)); } } else { mdprintf(odesc, "stream: OK\n"); if(logok) ! logg("stream %u: OK\n", port); } return ret; --- 547,563 ---- if(ret == CL_VIRUS) { mdprintf(odesc, "stream: %s FOUND\n", virname); ! logg("stream %s %u: %s FOUND\n", peer_addr, port, virname); virusaction("stream", virname, copt); } else if(ret != CL_CLEAN) { if(retval == 1) { mdprintf(odesc, "stream: %s ERROR\n", cl_strerror(ret)); ! logg("stream %s %u: %s ERROR\n", peer_addr, port, cl_strerror(ret)); } } else { mdprintf(odesc, "stream: OK\n"); if(logok) ! logg("stream %s %u: OK\n", peer_addr, port); } return ret;