diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-09-29 14:37:33 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-09-29 14:37:33 +0200 |
commit | f45217e776c937b677653c287d63b54ac8281bba (patch) | |
tree | fd1a7355a7d29a181cec5b31740b42f3cfcf3a1a | |
parent | 536415cf3dba053b0d2294b7f1dc8e34328e795f (diff) | |
download | rsyslog-f45217e776c937b677653c287d63b54ac8281bba.tar.gz rsyslog-f45217e776c937b677653c287d63b54ac8281bba.tar.xz rsyslog-f45217e776c937b677653c287d63b54ac8281bba.zip |
bugfix: zero-sized UDP messages are no longer processed
Until now, they were forwarded to processing, but this makes no sense
Also, it looks like the system seems to provide a zero return code
on a UDP recvfrom() from time to time for some internal reasons. These
"receives" are now silently ignored.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | plugins/imudp/imudp.c | 3 |
2 files changed, 8 insertions, 0 deletions
@@ -2,6 +2,11 @@ Version 4.4.2 [v4-stable] (rgerhards), 2009-09-?? - bugfix: invalid handling of zero-sized messages, could lead to mis- addressing and potential memory corruption/segfault +- bugfix: zero-sized UDP messages are no longer processed + until now, they were forwarded to processing, but this makes no sense + Also, it looks like the system seems to provide a zero return code + on a UDP recvfrom() from time to time for some internal reasons. These + "receives" are now silently ignored. - bugfix: random data could be appended to message, possibly causing segfaults - bugfix: reverse lookup reduction logic in imudp do DNS queries too often diff --git a/plugins/imudp/imudp.c b/plugins/imudp/imudp.c index 658ceb23..6f4a6384 100644 --- a/plugins/imudp/imudp.c +++ b/plugins/imudp/imudp.c @@ -178,6 +178,9 @@ processSocket(int fd, struct sockaddr_storage *frominetPrev, int *pbIsPermitted, ABORT_FINALIZE(RS_RET_ERR); } + if(lenRcvBuf == 0) + continue; /* this looks a bit strange, but practice shows it happens... */ + /* if we reach this point, we had a good receive and can process the packet received */ /* check if we have a different sender than before, if so, we need to query some new values */ if(net.CmpHost(&frominet, frominetPrev, socklen) != 0) { |