diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-11-12 11:55:04 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-11-12 11:55:04 +0100 |
commit | 4ae292e664260f148e7da6c1641d1490c059371e (patch) | |
tree | 08fba98add59d4d1a6cefcb54b0590c3086018d3 | |
parent | 20f1c9c502beadcc5c6e549c31795e538484ec4f (diff) | |
download | rsyslog-4ae292e664260f148e7da6c1641d1490c059371e.tar.gz rsyslog-4ae292e664260f148e7da6c1641d1490c059371e.tar.xz rsyslog-4ae292e664260f148e7da6c1641d1490c059371e.zip |
bugfix: omudpspoof miscalculated source and destination ports
while this was probably not noticed for source ports, it resulted in
almost all destination ports being wrong, except for the default port
of 514, which by virtue of its binary representation was calculated
correct (and probably thus the bug not earlier detected).
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | plugins/omudpspoof/omudpspoof.c | 8 |
2 files changed, 10 insertions, 3 deletions
@@ -3,6 +3,11 @@ Version 5.3.5 [DEVEL] (rgerhards), 2009-11-?? - some improvement of omfile performance with dynafiles saved costly time() calls by employing a logical clock, which is sufficient for the use case +- bugfix: omudpspoof miscalculated source and destination ports + while this was probably not noticed for source ports, it resulted in + almost all destination ports being wrong, except for the default port + of 514, which by virtue of its binary representation was calculated + correct (and probably thus the bug not earlier detected). - bugfixes imported from earlier releases * bugfix: named pipes did no longer work (they always got an open error) this was a regression from the omfile rewrite in 4.5.0 diff --git a/plugins/omudpspoof/omudpspoof.c b/plugins/omudpspoof/omudpspoof.c index c70ef836..50bc6c9a 100644 --- a/plugins/omudpspoof/omudpspoof.c +++ b/plugins/omudpspoof/omudpspoof.c @@ -181,7 +181,8 @@ ENDdbgPrintInstInfo /* Send a message via UDP * rgehards, 2007-12-20 */ -static rsRetVal UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, size_t len) +static inline rsRetVal +UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, size_t len) { struct addrinfo *r; int lsent = 0; @@ -208,9 +209,10 @@ static rsRetVal UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, si for (r = pData->f_addr; r; r = r->ai_next) { tempaddr = (struct sockaddr_in *)r->ai_addr; libnet_clear_packet(libnet_handle); + /* note: libnet does need ports in host order NOT in network byte order! -- rgerhards, 2009-11-12 */ udp = libnet_build_udp( - pData->sourcePort, /* source port */ - tempaddr->sin_port, /* destination port */ + ntohs(pData->sourcePort),/* source port */ + ntohs(tempaddr->sin_port),/* destination port */ LIBNET_UDP_H + len, /* packet length */ 0, /* checksum */ (u_char*)msg, /* payload */ |