fix issue announced at http://secunia.com/advisories/28124/
the fix is already in the CVS for quite some time and will
be intergrated in the next release 1.4.3.

diff -urNp hexen2source-1.4.2/hexenworld/Client/huffman.c hexen2source-1.4.2r1/hexenworld/Client/huffman.c
--- hexen2source-1.4.2/hexenworld/Client/huffman.c	2007-10-02 12:36:27.000000000 +0300
+++ hexen2source-1.4.2r1/hexenworld/Client/huffman.c	2007-12-19 09:31:41.000000000 +0200
@@ -226,15 +226,23 @@ void HuffDecode (unsigned char *in, unsi
 	int	bits, tbits;
 	huffnode_t	*tmp;
 
+	--inlen;
+	if (inlen < 0)
+	{
+		*outlen = 0;
+		return;
+	}
 	if (*in == 0xff)
 	{
-		if (inlen > 1)
-			memcpy (out, in+1, inlen-1);
-		*outlen = inlen-1;
+		if (inlen > maxlen)
+			memcpy (out, in+1, maxlen);
+		else if (inlen)
+			memcpy (out, in+1, inlen);
+		*outlen = inlen;
 		return;
 	}
 
-	tbits = (inlen-1)*8 - *in;
+	tbits = inlen*8 - *in;
 	bits = 0;
 	*outlen = 0;
 
diff -urNp hexen2source-1.4.2/hw_utils/hwrcon/huffman.c hexen2source-1.4.2r1/hw_utils/hwrcon/huffman.c
--- hexen2source-1.4.2/hw_utils/hwrcon/huffman.c	2007-10-02 12:36:29.000000000 +0300
+++ hexen2source-1.4.2r1/hw_utils/hwrcon/huffman.c	2007-12-19 09:32:07.000000000 +0200
@@ -227,15 +227,23 @@ void HuffDecode (unsigned char *in, unsi
 	int	bits, tbits;
 	huffnode_t	*tmp;
 
+	--inlen;
+	if (inlen < 0)
+	{
+		*outlen = 0;
+		return;
+	}
 	if (*in == 0xff)
 	{
-		if (inlen > 1)
-			memcpy (out, in+1, inlen-1);
-		*outlen = inlen-1;
+		if (inlen > maxlen)
+			memcpy (out, in+1, maxlen);
+		else if (inlen)
+			memcpy (out, in+1, inlen);
+		*outlen = inlen;
 		return;
 	}
 
-	tbits = (inlen-1)*8 - *in;
+	tbits = inlen*8 - *in;
 	bits = 0;
 	*outlen = 0;
 
