[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

aCaB acab at clamav.net
Sun Apr 4 00:53:43 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit aecb594f3cf0388c886787a89932f552785d2fea
Author: aCaB <acab at clamav.net>
Date:   Mon Jun 29 16:46:44 2009 +0200

    use INSTREAM in clamav-milter

diff --git a/ChangeLog b/ChangeLog
index 2a5abcd..2155252 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jun 29 15:40:42 CEST 2009 (acab)
+------------------------------------
+ * clamav-milter: use s/STREAM/INSTREAM/ (bb#1548)
+
 Mon Jun 29 11:25:46 CEST 2009 (acab)
 ------------------------------------
  * clamav-milter/netcode.c: Properly handle clamd disconnection (bb#1643)
diff --git a/clamav-milter/clamfi.c b/clamav-milter/clamfi.c
index cccc005..f00c331 100644
--- a/clamav-milter/clamfi.c
+++ b/clamav-milter/clamfi.c
@@ -64,7 +64,6 @@ enum {
 static const char *HDR_UNAVAIL = "UNKNOWN";
 
 struct CLAMFI {
-    char buffer[CLAMFIBUFSZ];
     const char *virusname;
     char *msg_subj;
     char *msg_date;
@@ -78,6 +77,8 @@ struct CLAMFI {
     unsigned int gotbody;
     unsigned int scanned_count;
     unsigned int status_count;
+    uint32_t sendme;
+    char buffer[CLAMFIBUFSZ];
 };
 
 
@@ -175,18 +176,21 @@ static sfsistat sendchunk(struct CLAMFI *cf, unsigned char *bodyp, size_t len, S
 	    cf->bufsz += len;
 	} else if(len < CLAMFIBUFSZ) {
 	    memcpy(&cf->buffer[cf->bufsz], bodyp, CLAMFIBUFSZ - cf->bufsz);
-	    sendfailed = nc_send(cf->alt, cf->buffer, CLAMFIBUFSZ);
+	    cf->sendme = htonl(CLAMFIBUFSZ);
+	    sendfailed = nc_send(cf->main, &cf->sendme, CLAMFIBUFSZ + 4);
 	    len -= (CLAMFIBUFSZ - cf->bufsz);
 	    memcpy(cf->buffer, &bodyp[CLAMFIBUFSZ - cf->bufsz], len);
 	    cf->bufsz = len;
 	} else {
-	    if(nc_send(cf->alt, cf->buffer, cf->bufsz) || nc_send(cf->alt, bodyp, len))
+	    uint32_t sendmetoo = htonl(len);
+	    cf->sendme = htonl(cf->bufsz);
+	    if((cf->bufsz && nc_send(cf->main, &cf->sendme, cf->bufsz + 4)) || nc_send(cf->main, &sendmetoo, 4) || nc_send(cf->main, bodyp, len))
 		sendfailed = 1;
 	    cf->bufsz = 0;
 	}
 	if(sendfailed) {
 	    logg("!Streaming failed\n");
-	    nullify(ctx, cf, CF_MAIN);
+	    nullify(ctx, cf, CF_NONE);
 	    return FailAction;
 	}
     }
@@ -289,12 +293,13 @@ sfsistat clamfi_eom(SMFICTX *ctx) {
 	    return FailAction;
 	}
     } else {
-	if(cf->bufsz && nc_send(cf->alt, cf->buffer, cf->bufsz)) {
+	uint32_t sendmetoo = 0;
+	cf->sendme = htonl(cf->bufsz);
+	if((cf->bufsz && nc_send(cf->main, &cf->sendme, cf->bufsz + 4)) || nc_send(cf->main, &sendmetoo, 4))  {
 	    logg("!Failed to flush STREAM\n");
-	    nullify(ctx, cf, CF_MAIN);
+	    nullify(ctx, cf, CF_NONE);
 	    return FailAction;
 	}
-	close(cf->alt);
     }
 
     reply = nc_recv(cf->main);
diff --git a/clamav-milter/netcode.c b/clamav-milter/netcode.c
index de18e60..7624cf4 100644
--- a/clamav-milter/netcode.c
+++ b/clamav-milter/netcode.c
@@ -315,41 +315,8 @@ int nc_connect_rand(int *main, int *alt, int *local) {
 	unlink(unlinkme);
 	free(unlinkme);
     } else {
-	char *reply=NULL, *port;
-	int nport;
-	struct CP_ENTRY new_cpe;
-	union {
-	    struct sockaddr_in sa4;
-	    struct sockaddr_in6 sa6;
-	} sa;
-
-	if(nc_send(*main, "nSTREAM\n", 8) || !(reply = nc_recv(*main)) || !(port = strstr(reply, "PORT"))) {
+	if(nc_send(*main, "nINSTREAM\n", 10)) {
 	    logg("!Failed to communicate with clamd\n");
-	    if(reply) {
-		free(reply);
-		close(*main);
-	    }
-	    return 1;
-	}
-	port+=5;
-	sscanf(port, "%d", &nport);
-	free(reply);
-	if(cpe->server->sa_family == AF_INET && cpe->socklen == sizeof(struct sockaddr_in)) {
-	    memcpy(&sa, cpe->server, sizeof(struct sockaddr_in));
-	    sa.sa4.sin_port = htons(nport);
-	    new_cpe.socklen = sizeof(struct sockaddr_in);
-	} else if(cpe->server->sa_family == AF_INET6 && cpe->socklen == sizeof(struct sockaddr_in6)) {
-	    memcpy(&sa, cpe->server, sizeof(struct sockaddr_in6));
-	    sa.sa6.sin6_port = htons(nport);
-	    new_cpe.socklen = sizeof(struct sockaddr_in6);
-	} else {
-	    logg("!WTF WHY AM I DOING HERE???\n");
-	    close(*main);
-	    return 1;
-	}
-	new_cpe.server = (struct sockaddr *)&sa;
-	if ((*alt = nc_connect_entry(&new_cpe)) == -1) {
-	    logg("!Failed to communicate with clamd for streaming\n");
 	    close(*main);
 	    return 1;
 	}

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list