revert previous commit, it is the wrong fix.

git-svn: trunk@4828
0.95
Török Edvin 16 years ago
parent a1f0c01189
commit a414efbf5e
  1. 9
      ChangeLog
  2. 21
      clamav-milter/netcode.c
  3. 9
      clamd/others.c
  4. 3
      clamd/server-th.c
  5. 4
      clamd/session.c

@ -1,12 +1,3 @@
Wed Feb 18 21:39:08 EET 2009 (edwin)
------------------------------------
* clamav-milter/netcode.c, clamd/others.c, clamd/server-th.c,
clamd/session.c: Fix wrong use of strerror_r: it doesn't have to
use/fill the buffer, it can return a pointer to a static location,
as described in the manpage. This can happen on a Linux system with
a foreign locale, where the LANG=C messages are returned this way.
(BB #1403)
Wed Feb 18 21:08:50 EET 2009 (edwin)
------------------------------------
* clamd/server-th.c, unit_tests/check_clamd.c,

@ -75,18 +75,21 @@ static int nc_socket(struct CP_ENTRY *cpe) {
char er[256];
if (s == -1) {
logg("!Failed to create socket: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!Failed to create socket: %s\n", er);
return -1;
}
flags = fcntl(s, F_GETFL, 0);
if (flags == -1) {
logg("!fcntl_get failed: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!fcntl_get failed: %s\n", er);
close(s);
return -1;
}
flags |= O_NONBLOCK;
if (fcntl(s, F_SETFL, flags) == -1) {
logg("!fcntl_set failed: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!fcntl_set failed: %s\n", er);
close(s);
return -1;
}
@ -102,7 +105,8 @@ static int nc_connect(int s, struct CP_ENTRY *cpe) {
if (!res) return 0;
if (errno != EINPROGRESS) {
logg("*connect failed: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("*connect failed: %s\n", er);
close(s);
return -1;
}
@ -154,7 +158,8 @@ int nc_send(int s, const void *buff, size_t len) {
continue;
}
if(errno != EAGAIN && errno != EWOULDBLOCK) {
logg("!send failed: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!send failed: %s\n", er);
close(s);
return 1;
}
@ -214,7 +219,8 @@ int nc_sendmsg(int s, int fd) {
if((ret = sendmsg(s, &msg, 0)) == -1) {
char er[256];
logg("!clamfi_eom: FD send failed (%s)\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!clamfi_eom: FD send failed (%s)\n", er);
close(s);
}
return ret;
@ -251,7 +257,8 @@ char *nc_recv(int s) {
res = recv(s, &buf[len], sizeof(buf) - len, 0);
if(res==-1) {
char er[256];
logg("!recv failed after successful select: %s\n", strerror_r(errno, er, sizeof(er)));
strerror_r(errno, er, sizeof(er));
logg("!recv failed after successful select: %s\n", er);
close(s);
return NULL;
}

@ -608,16 +608,15 @@ int fds_poll_recv(struct fd_data *data, int timeout, int check_signals)
if (retval == -1 && errno != EINTR) {
char buff[BUFFSIZE + 1];
char *p;
#ifdef HAVE_STRERROR_R
p = strerror_r(errno, buff, BUFFSIZE);
strerror_r(errno, buff, BUFFSIZE);
#else
p = "";
buff[0] = '\0';
#endif
#ifdef HAVE_POLL
logg("!poll_recv_fds: poll failed: %s\n", p);
logg("!poll_recv_fds: poll failed: %s\n", buff);
#else
logg("!poll_recv_fds: select failed: %s\n", p);
logg("!poll_recv_fds: select failed: %s\n", buff);
#endif
}

@ -421,7 +421,8 @@ static void *acceptloop_th(void *arg)
} else if (errno != EINTR) {
/* very bad - need to exit or restart */
#ifdef HAVE_STRERROR_R
logg("!accept() failed: %s\n", strerror_r(errno, buff, BUFFSIZE));
strerror_r(errno, buff, BUFFSIZE);
logg("!accept() failed: %s\n", buff);
#else
logg("!accept() failed\n");
#endif

@ -157,9 +157,9 @@ int conn_reply_errno(const client_conn_t *conn, const char *path,
const char *msg)
{
char buf[BUFFSIZE + sizeof(". ERROR")];
char buf2[BUFFSIZE + sizeof(". ERROR")];
#ifdef HAVE_STRERROR_R
snprintf(buf, sizeof(buf), "%s. ERROR", strerror_r(errno, buf2, BUFFSIZE-1));
strerror_r(errno, buf, BUFFSIZE-1);
strcat(buf, ". ERROR");
#else
snprintf(buf, sizeof(buf), "%u. ERROR", errno);
#endif

Loading…
Cancel
Save