Browse code

revert previous commit, it is the wrong fix.

git-svn: trunk@4828

Török Edvin authored on 2009/02/19 04:11:21
Showing 5 changed files
... ...
@@ -1,12 +1,3 @@
1
-Wed Feb 18 21:39:08 EET 2009 (edwin)
2
- * clamav-milter/netcode.c, clamd/others.c, clamd/server-th.c,
3
- clamd/session.c: Fix wrong use of strerror_r: it doesn't have to
4
- use/fill the buffer, it can return a pointer to a static location,
5
- as described in the manpage.  This can happen on a Linux system with
6
- a foreign locale, where the LANG=C messages are returned this way.
7
- (BB #1403)
8
-
9 1
 Wed Feb 18 21:08:50 EET 2009 (edwin)
10 2
 ------------------------------------
11 3
  * clamd/server-th.c, unit_tests/check_clamd.c,
... ...
@@ -75,18 +75,21 @@ static int nc_socket(struct CP_ENTRY *cpe) {
75 75
     char er[256];
76 76
 
77 77
     if (s == -1) {
78
-	logg("!Failed to create socket: %s\n", strerror_r(errno, er, sizeof(er)));
78
+	strerror_r(errno, er, sizeof(er));
79
+	logg("!Failed to create socket: %s\n", er);
79 80
 	return -1;
80 81
     }
81 82
     flags = fcntl(s, F_GETFL, 0);
82 83
     if (flags == -1) {
83
-	logg("!fcntl_get failed: %s\n", strerror_r(errno, er, sizeof(er)));
84
+	strerror_r(errno, er, sizeof(er));
85
+	logg("!fcntl_get failed: %s\n", er);
84 86
 	close(s);
85 87
 	return -1;
86 88
     }
87 89
     flags |= O_NONBLOCK;
88 90
     if (fcntl(s, F_SETFL, flags) == -1) {
89
-	logg("!fcntl_set failed: %s\n", strerror_r(errno, er, sizeof(er)));
91
+	strerror_r(errno, er, sizeof(er));
92
+	logg("!fcntl_set failed: %s\n", er);
90 93
 	close(s);
91 94
 	return -1;
92 95
     }
... ...
@@ -102,7 +105,8 @@ static int nc_connect(int s, struct CP_ENTRY *cpe) {
102 102
 
103 103
     if (!res) return 0;
104 104
     if (errno != EINPROGRESS) {
105
-	logg("*connect failed: %s\n", strerror_r(errno, er, sizeof(er)));
105
+	strerror_r(errno, er, sizeof(er));
106
+	logg("*connect failed: %s\n", er);
106 107
 	close(s);
107 108
 	return -1;
108 109
     }
... ...
@@ -154,7 +158,8 @@ int nc_send(int s, const void *buff, size_t len) {
154 154
 	    continue;
155 155
 	}
156 156
 	if(errno != EAGAIN && errno != EWOULDBLOCK) {
157
-	    logg("!send failed: %s\n", strerror_r(errno, er, sizeof(er)));
157
+	    strerror_r(errno, er, sizeof(er));
158
+	    logg("!send failed: %s\n", er);
158 159
 	    close(s);
159 160
 	    return 1;
160 161
 	}
... ...
@@ -214,7 +219,8 @@ int nc_sendmsg(int s, int fd) {
214 214
 
215 215
     if((ret = sendmsg(s, &msg, 0)) == -1) {
216 216
 	char er[256];
217
-	logg("!clamfi_eom: FD send failed (%s)\n", strerror_r(errno, er, sizeof(er)));
217
+	strerror_r(errno, er, sizeof(er));
218
+	logg("!clamfi_eom: FD send failed (%s)\n", er);
218 219
 	close(s);
219 220
     }
220 221
     return ret;
... ...
@@ -251,7 +257,8 @@ char *nc_recv(int s) {
251 251
 	res = recv(s, &buf[len], sizeof(buf) - len, 0);
252 252
 	if(res==-1) {
253 253
 	    char er[256];
254
-	    logg("!recv failed after successful select: %s\n", strerror_r(errno, er, sizeof(er)));
254
+	    strerror_r(errno, er, sizeof(er));
255
+	    logg("!recv failed after successful select: %s\n", er);
255 256
 	    close(s);
256 257
 	    return NULL;
257 258
 	}
... ...
@@ -608,16 +608,15 @@ int fds_poll_recv(struct fd_data *data, int timeout, int check_signals)
608 608
 
609 609
     if (retval == -1 && errno != EINTR) {
610 610
 	char buff[BUFFSIZE + 1];
611
-	char *p;
612 611
 #ifdef HAVE_STRERROR_R
613
-	p = strerror_r(errno, buff, BUFFSIZE);
612
+	strerror_r(errno, buff, BUFFSIZE);
614 613
 #else
615
-	p = "";
614
+	buff[0] = '\0';
616 615
 #endif
617 616
 #ifdef HAVE_POLL
618
-	logg("!poll_recv_fds: poll failed: %s\n", p);
617
+	logg("!poll_recv_fds: poll failed: %s\n", buff);
619 618
 #else
620
-	logg("!poll_recv_fds: select failed: %s\n", p);
619
+	logg("!poll_recv_fds: select failed: %s\n", buff);
621 620
 #endif
622 621
     }
623 622
 
... ...
@@ -421,7 +421,8 @@ static void *acceptloop_th(void *arg)
421 421
 	    } else if (errno != EINTR) {
422 422
 		/* very bad - need to exit or restart */
423 423
 #ifdef HAVE_STRERROR_R
424
-		logg("!accept() failed: %s\n", strerror_r(errno, buff, BUFFSIZE));
424
+		strerror_r(errno, buff, BUFFSIZE);
425
+		logg("!accept() failed: %s\n", buff);
425 426
 #else
426 427
 		logg("!accept() failed\n");
427 428
 #endif
... ...
@@ -157,9 +157,9 @@ int conn_reply_errno(const client_conn_t *conn, const char *path,
157 157
 		     const char *msg)
158 158
 {
159 159
     char buf[BUFFSIZE + sizeof(". ERROR")];
160
-    char buf2[BUFFSIZE + sizeof(". ERROR")];
161 160
 #ifdef HAVE_STRERROR_R
162
-    snprintf(buf, sizeof(buf), "%s. ERROR",  strerror_r(errno, buf2, BUFFSIZE-1));
161
+    strerror_r(errno, buf, BUFFSIZE-1);
162
+    strcat(buf, ". ERROR");
163 163
 #else
164 164
     snprintf(buf, sizeof(buf), "%u. ERROR", errno);
165 165
 #endif