diff options
author | Thilo Schulz <arny@ats.s.bawue.de> | 2011-04-27 16:03:35 +0000 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2013-01-09 17:07:53 +0000 |
commit | 0d5fef7f5c33fd4176b27c79d9cef7512801f471 (patch) | |
tree | 235166fccae70dcc97fca64b64a676a8e847a96e /src/qcommon/qcommon.h | |
parent | c4186224a16b1dc238775bbe9ff3af4362c7d5eb (diff) |
- Harden the client and server protocol against UDP spoofing attacks. This will defend ioquake3 against http://aluigi.altervista.org/papers/q3noclient.txt (#3041) - Retains full compatibility to the old but unsecure protocol between clients and servers - Harden the connection process against DoS attacks, possibly connected to UDP spoofing
Diffstat (limited to 'src/qcommon/qcommon.h')
-rw-r--r-- | src/qcommon/qcommon.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/qcommon/qcommon.h b/src/qcommon/qcommon.h index d09ee299..affde995 100644 --- a/src/qcommon/qcommon.h +++ b/src/qcommon/qcommon.h @@ -192,7 +192,8 @@ void NET_Sleep(int msec); #define MAX_DOWNLOAD_WINDOW 8 // max of eight download frames #define MAX_DOWNLOAD_BLKSIZE 2048 // 2048 byte block chunks - + +#define NETCHAN_GENCHECKSUM(challenge, sequence) ((challenge) ^ ((sequence) * (challenge))) /* Netchan handles packet fragmentation and out of order / duplicate suppression @@ -221,10 +222,12 @@ typedef struct { int unsentFragmentStart; int unsentLength; byte unsentBuffer[MAX_MSGLEN]; + + int challenge; } netchan_t; void Netchan_Init( int qport ); -void Netchan_Setup( netsrc_t sock, netchan_t *chan, netadr_t adr, int qport ); +void Netchan_Setup(netsrc_t sock, netchan_t *chan, netadr_t adr, int qport, int challenge); void Netchan_Transmit( netchan_t *chan, int length, const byte *data ); void Netchan_TransmitNextFragment( netchan_t *chan ); @@ -240,7 +243,7 @@ PROTOCOL ============================================================== */ -#define PROTOCOL_VERSION 70 +#define PROTOCOL_VERSION 71 // maintain a list of compatible protocols for demo playing // NOTE: that stuff only works with two digits protocols |