[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 01:23:10 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit f642d53c7f4fdb511edf64bac4d3d429d678073a
Author: aCaB <acab at clamav.net>
Date:   Sat Mar 20 21:08:13 2010 +0100

    win32: use non tls (s)rand(), allow nonblocking sockets

diff --git a/clamd/server-th.c b/clamd/server-th.c
index 07c60bb..1eead2a 100644
--- a/clamd/server-th.c
+++ b/clamd/server-th.c
@@ -387,7 +387,10 @@ static void *acceptloop_th(void *arg)
 
 	    if (new_sd >= 0) {
 		int ret, flags;
-
+#ifdef _WIN32
+		sock_set_nonblock(new_fd);
+		logg("^Can't set socket to nonblocking mode, errno %d\n", errno);
+#else
 #ifdef F_GETFL
 		flags = fcntl(new_sd, F_GETFL, 0);
 		if (flags != -1) {
@@ -401,6 +404,7 @@ static void *acceptloop_th(void *arg)
 #else
 		logg("^Nonblocking sockets not available!\n");
 #endif
+#endif
 		logg("$Got new connection, FD %d\n", new_sd);
 		pthread_mutex_lock(recv_fds->buf_mutex);
 		ret = fds_add(recv_fds, new_sd, 0, commandtimeout);
diff --git a/win32/clamav-config.h b/win32/clamav-config.h
index 8a5aec8..f866ac9 100644
--- a/win32/clamav-config.h
+++ b/win32/clamav-config.h
@@ -493,7 +493,7 @@
 /* #undef USE_SYSLOG */
 
 /* Version number of package */
-#define VERSION "devel-clamav-0.96rc1-16-g89e12ee"
+#define VERSION "devel-clamav-0.96rc1-19-gc491083"
 
 /* Version suffix for package */
 #define VERSION_SUFFIX ""
diff --git a/win32/compat/net.c b/win32/compat/net.c
index 7c999b9..c98627b 100644
--- a/win32/compat/net.c
+++ b/win32/compat/net.c
@@ -350,6 +350,14 @@ int w32_shutdown(int sockfd, int how) {
     return 0;
 }
 
+int sock_set_nonblock(int sockfd) {
+    u_long arg = 1;
+    if(ioctlsocket((SOCKET)sockfd, FIONBIO, &arg)) {
+	wsock2errno();
+	return -1;
+    }
+    return 0;
+}
 
 struct w32polldata {
     HANDLE setme;
diff --git a/win32/compat/net.h b/win32/compat/net.h
index 2591abb..0901a85 100644
--- a/win32/compat/net.h
+++ b/win32/compat/net.h
@@ -43,5 +43,6 @@ int poll_with_event(struct pollfd *fds, int nfds, int timeout, HANDLE event);
 int w32_accept(SOCKET sockfd, const struct sockaddr *addr, socklen_t *addrlen);
 int w32_listen(int sockfd, int backlog);
 int w32_shutdown(int sockfd, int how);
+int sock_set_nonblock(int sockfd);
 
 #endif
diff --git a/libclamav/cache.h b/win32/compat/random.c
similarity index 69%
copy from libclamav/cache.h
copy to win32/compat/random.c
index 6fde07f..4954e84 100644
--- a/libclamav/cache.h
+++ b/win32/compat/random.c
@@ -17,15 +17,19 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
  */
-
-#ifndef __CACHE_H
-#define __CACHE_H
-
-#include "clamav.h"
-#include "others.h"
-
-void cache_add(unsigned char *md5, size_t size, cli_ctx *ctx);
-int cache_check(unsigned char *hash, cli_ctx *ctx);
-int cli_cache_init(struct cl_engine *engine);
-void cli_cache_destroy(struct cl_engine *engine);
-#endif
+
+/* A non TLS based and non thread safe canonical rand() implementation */
+
+#include <stdlib.h>
+#include "random.h"
+
+static unsigned long next = 1;
+int w32_rand(void) {
+    next = next * 1103515245 + 12345;
+    return((unsigned)(next/65536) % (RAND_MAX+1));
+}
+
+void w32_srand(unsigned int seed) {
+    next = seed;
+}
+
diff --git a/win32/compat/snprintf.h b/win32/compat/random.h
similarity index 80%
copy from win32/compat/snprintf.h
copy to win32/compat/random.h
index 14de256..7654935 100644
--- a/win32/compat/snprintf.h
+++ b/win32/compat/random.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2009 Sourcefire, Inc.
+ *  Copyright (C) 2010 Sourcefire, Inc.
  *
  *  Authors: aCaB <acab at clamav.net>
  *
@@ -18,9 +18,10 @@
  *  MA 02110-1301, USA.
  */
 
-#ifndef __SNPRINTF_H
-#define __SNPRINTF_H
+#ifndef __RANDOM_H
+#define __RANDOM_H
 
-int snprintf(char *str, size_t size, const char *format, ...);
+int w32_rand(void);
+void w32_srand(unsigned int seed);
 
-#endif /* __SNPRINTF_H */
\ No newline at end of file
+#endif
diff --git a/win32/libclamav.def b/win32/libclamav.def
index ae27163..e5f429a 100644
--- a/win32/libclamav.def
+++ b/win32/libclamav.def
@@ -117,79 +117,82 @@ EXPORTS cli_hex2str @44261 NONAME
 EXPORTS cli_hex2ui @44262 NONAME
 
 ; compatibility layer, tommath, zlib
-EXPORTS gettimeofday @44263 NONAME
-EXPORTS opendir @44264 NONAME
-EXPORTS readdir @44265 NONAME
-EXPORTS closedir @44266 NONAME
-EXPORTS safe_open @44267 NONAME
-EXPORTS snprintf @44268 NONAME
-EXPORTS mp_init @44269 NONAME
-EXPORTS mp_read_radix @44270 NONAME
-EXPORTS mp_clear @44271 NONAME
-EXPORTS sha256_init @44272 NONAME
-EXPORTS sha256_update @44273 NONAME
-EXPORTS sha256_final @44274 NONAME
-EXPORTS optget @44275 NONAME
-EXPORTS optparse @44276 NONAME
-EXPORTS optfree @44277 NONAME
-EXPORTS w32_glob @44278 NONAME
-EXPORTS dirname @44279 NONAME
-EXPORTS basename @44280 NONAME
-EXPORTS clam_options @44281 NONAME DATA
+EXPORTS w32_srand @44263 NONAME
+EXPORTS w32_rand @44264 NONAME
+EXPORTS gettimeofday @44265 NONAME
+EXPORTS opendir @44266 NONAME
+EXPORTS readdir @44267 NONAME
+EXPORTS closedir @44268 NONAME
+EXPORTS safe_open @44269 NONAME
+EXPORTS snprintf @44270 NONAME
+EXPORTS mp_init @44271 NONAME
+EXPORTS mp_read_radix @44272 NONAME
+EXPORTS mp_clear @44273 NONAME
+EXPORTS sha256_init @44274 NONAME
+EXPORTS sha256_update @44275 NONAME
+EXPORTS sha256_final @44276 NONAME
+EXPORTS optget @44277 NONAME
+EXPORTS optparse @44278 NONAME
+EXPORTS optfree @44279 NONAME
+EXPORTS w32_glob @44280 NONAME
+EXPORTS dirname @44281 NONAME
+EXPORTS basename @44282 NONAME
+EXPORTS clam_options @44283 NONAME DATA
 
 ; zlib
-EXPORTS gzopen @44282 NONAME
-EXPORTS gzgets @44283 NONAME
-EXPORTS gzdopen @44284 NONAME
-EXPORTS gzclose @44285 NONAME
-EXPORTS gzwrite @44286 NONAME
+EXPORTS gzopen @44284 NONAME
+EXPORTS gzgets @44285 NONAME
+EXPORTS gzdopen @44286 NONAME
+EXPORTS gzclose @44287 NONAME
+EXPORTS gzwrite @44288 NONAME
 
 ; pthreads
-EXPORTS pthread_mutex_lock @44287 NONAME
-EXPORTS pthread_mutex_unlock @44288 NONAME
-EXPORTS pthread_mutex_destroy @44289 NONAME
-EXPORTS pthread_once @44290 NONAME
-EXPORTS pthread_getspecific @44291 NONAME
-EXPORTS pthread_setspecific @44292 NONAME
-EXPORTS pthread_create @44293 NONAME
-EXPORTS pthread_cond_timedwait @44294 NONAME
-EXPORTS pthread_cond_init @44295 NONAME
-EXPORTS pthread_cond_broadcast @44296 NONAME
-EXPORTS pthread_cond_signal @44297 NONAME
-EXPORTS pthread_cond_destroy @44298 NONAME
-EXPORTS pthread_join @44299 NONAME
-EXPORTS pthread_key_create @44300 NONAME
-EXPORTS pthread_cond_wait @44301 NONAME
-EXPORTS pthread_attr_init @44302 NONAME
-EXPORTS pthread_attr_setdetachstate @44303 NONAME
-EXPORTS pthread_attr_destroy @44304 NONAME
-EXPORTS pthread_mutex_init @44305 NONAME
+EXPORTS pthread_mutex_lock @44289 NONAME
+EXPORTS pthread_mutex_unlock @44290 NONAME
+EXPORTS pthread_mutex_destroy @44291 NONAME
+EXPORTS pthread_once @44292 NONAME
+EXPORTS pthread_getspecific @44293 NONAME
+EXPORTS pthread_setspecific @44294 NONAME
+EXPORTS pthread_create @44295 NONAME
+EXPORTS pthread_cond_timedwait @44296 NONAME
+EXPORTS pthread_cond_init @44297 NONAME
+EXPORTS pthread_cond_broadcast @44298 NONAME
+EXPORTS pthread_cond_signal @44299 NONAME
+EXPORTS pthread_cond_destroy @44300 NONAME
+EXPORTS pthread_join @44301 NONAME
+EXPORTS pthread_key_create @44302 NONAME
+EXPORTS pthread_cond_wait @44303 NONAME
+EXPORTS pthread_attr_init @44304 NONAME
+EXPORTS pthread_attr_setdetachstate @44305 NONAME
+EXPORTS pthread_attr_destroy @44306 NONAME
+EXPORTS pthread_mutex_init @44307 NONAME
 
 ; winsock bridge and compatibility functions
-EXPORTS htonl @44306 NONAME
-EXPORTS htons @44307 NONAME
-EXPORTS ntohl @44308 NONAME
-EXPORTS ntohs @44309 NONAME
-EXPORTS __WSAFDIsSet @44310 NONAME
-EXPORTS w32_socket @44311 NONAME
-EXPORTS w32_getsockopt @44312 NONAME
-EXPORTS w32_setsockopt @44313 NONAME
-EXPORTS w32_bind @44314 NONAME
-EXPORTS w32_listen @44315 NONAME
-EXPORTS w32_accept @44316 NONAME
-EXPORTS w32_connect @44317 NONAME
-EXPORTS w32_shutdown @44318 NONAME
-EXPORTS w32_send @44319 NONAME
-EXPORTS w32_recv @44320 NONAME
-EXPORTS w32_closesocket @44321 NONAME
-EXPORTS w32_getservbyname @44322 NONAME
-EXPORTS w32_getaddrinfo @44323 NONAME
-EXPORTS w32_freeaddrinfo @44324 NONAME
-EXPORTS w32_inet_ntop @44325 NONAME
-EXPORTS w32_gethostbyname @44326 NONAME
-EXPORTS w32_select @44327 NONAME
-EXPORTS poll_with_event @44328 NONAME
-EXPORTS w32_stat @44329 NONAME
-EXPORTS w32_strerror @44330 NONAME
-EXPORTS w32_strerror_r @44331 NONAME
-EXPORTS inet_addr @44332 NONAME
+EXPORTS htonl @44308 NONAME
+EXPORTS htons @44309 NONAME
+EXPORTS ntohl @44310 NONAME
+EXPORTS ntohs @44311 NONAME
+EXPORTS __WSAFDIsSet @44312 NONAME
+EXPORTS w32_socket @44313 NONAME
+EXPORTS w32_getsockopt @44314 NONAME
+EXPORTS w32_setsockopt @44315 NONAME
+EXPORTS w32_bind @44316 NONAME
+EXPORTS w32_listen @44317 NONAME
+EXPORTS w32_accept @44318 NONAME
+EXPORTS w32_connect @44319 NONAME
+EXPORTS w32_shutdown @44320 NONAME
+EXPORTS w32_send @44321 NONAME
+EXPORTS w32_recv @44322 NONAME
+EXPORTS w32_closesocket @44323 NONAME
+EXPORTS w32_getservbyname @44324 NONAME
+EXPORTS w32_getaddrinfo @44325 NONAME
+EXPORTS w32_freeaddrinfo @44326 NONAME
+EXPORTS w32_inet_ntop @44327 NONAME
+EXPORTS w32_gethostbyname @44328 NONAME
+EXPORTS w32_select @44329 NONAME
+EXPORTS poll_with_event @44330 NONAME
+EXPORTS w32_stat @44331 NONAME
+EXPORTS w32_strerror @44332 NONAME
+EXPORTS w32_strerror_r @44333 NONAME
+EXPORTS inet_addr @44334 NONAME
+EXPORTS sock_set_nonblock @44335 NONAME
diff --git a/win32/libclamav.vcproj b/win32/libclamav.vcproj
index 3932b71..cfc1222 100644
--- a/win32/libclamav.vcproj
+++ b/win32/libclamav.vcproj
@@ -812,6 +812,10 @@
 					>
 				</File>
 				<File
+					RelativePath=".\compat\random.c"
+					>
+				</File>
+				<File
 					RelativePath=".\compat\snprintf.c"
 					>
 				</File>
diff --git a/win32/platform.h b/win32/platform.h
index 50bf386..b154713 100644
--- a/win32/platform.h
+++ b/win32/platform.h
@@ -16,6 +16,7 @@
 #include "net.h"
 #include "w32_errno.h"
 #include "w32_stat.h"
+#include "random.h"
 
 #ifndef __cplusplus
 typedef unsigned short mode_t;
@@ -30,6 +31,8 @@ typedef unsigned short mode_t;
 
 char *strptime(const char *s, const char *format, struct tm *tm);
 
+#define srand w32_srand
+#define rand w32_rand
 #define socket w32_socket
 #define getsockopt w32_getsockopt
 #define setsockopt w32_setsockopt

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list