~ubuntu-branches/ubuntu/saucy/clamav/saucy-backports

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
From 13c80a6deadcd78e62c66bd8e178ead7d049bed6 Mon Sep 17 00:00:00 2001
From: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Date: Sat, 21 Jun 2014 17:02:06 +0200
Subject: Workaround a bug in libc on Hurd

The send() function, when asked to send 0 characters, doesn't trigger a corresponding recv(), except on Hurd.

This breaks the communication between clamd and clamdscan.

See: https://bugs.debian.org/752237
---
 clamd/scanner.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clamd/scanner.c b/clamd/scanner.c
index 06e2d1d..95656e2 100644
--- a/clamd/scanner.c
+++ b/clamd/scanner.c
@@ -118,6 +118,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea
 
     /* detect disconnected socket, 
      * this should NOT detect half-shutdown sockets (SHUT_WR) */
+#if !defined(__GNU__)
     if (send(scandata->conn->sd, &ret, 0, 0) == -1 && errno != EINTR) {
 	logg("$Client disconnected while command was active!\n");
 	thrmgr_group_terminate(scandata->conn->group);
@@ -125,7 +126,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea
 	    free(filename);
 	return CL_BREAK;
     }
-
+#endif
     if (thrmgr_group_need_terminate(scandata->conn->group)) {
 	logg("^Client disconnected while scanjob was active\n");
 	if (reason == visit_file)