[asterisk-commits] lmadsen: tag 1.8.3 r308579 - in /tags/1.8.3: ./ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Feb 22 16:52:15 CST 2011


Author: lmadsen
Date: Tue Feb 22 16:52:11 2011
New Revision: 308579

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=308579
Log:
Changed .version, ChangeLog, and remove old summary files.
Includes merge for AST-2011-002.

Removed:
    tags/1.8.3/asterisk-1.8.3-rc3-summary.html
    tags/1.8.3/asterisk-1.8.3-rc3-summary.txt
Modified:
    tags/1.8.3/.version
    tags/1.8.3/ChangeLog
    tags/1.8.3/main/udptl.c

Modified: tags/1.8.3/.version
URL: http://svnview.digium.com/svn/asterisk/tags/1.8.3/.version?view=diff&rev=308579&r1=308578&r2=308579
==============================================================================
--- tags/1.8.3/.version (original)
+++ tags/1.8.3/.version Tue Feb 22 16:52:11 2011
@@ -1,1 +1,1 @@
-1.8.3-rc3
+1.8.3

Modified: tags/1.8.3/ChangeLog
URL: http://svnview.digium.com/svn/asterisk/tags/1.8.3/ChangeLog?view=diff&rev=308579&r1=308578&r2=308579
==============================================================================
--- tags/1.8.3/ChangeLog (original)
+++ tags/1.8.3/ChangeLog Tue Feb 22 16:52:11 2011
@@ -1,3 +1,9 @@
+2011-02-22  Leif Madsen <lmadsen at digium.com>
+
+	* Asterisk 1.8.3 Released.
+
+	* Merged changes related to AST-2011-002
+
 2011-02-16  Leif Madsen <lmadsen at digium.com>
 
 	* Asterisk 1.8.3-rc3 Released.

Modified: tags/1.8.3/main/udptl.c
URL: http://svnview.digium.com/svn/asterisk/tags/1.8.3/main/udptl.c?view=diff&rev=308579&r1=308578&r2=308579
==============================================================================
--- tags/1.8.3/main/udptl.c (original)
+++ tags/1.8.3/main/udptl.c Tue Feb 22 16:52:11 2011
@@ -218,38 +218,29 @@
 	}
 	*pvalue = (buf[*len] & 0x3F) << 14;
 	(*len)++;
-	/* Indicate we have a fragment */
+	/* We have a fragment.  Currently we don't process fragments. */
+	ast_debug(1, "UDPTL packet with length greater than 16K received, decoding will fail\n");
 	return 1;
 }
 /*- End of function --------------------------------------------------------*/
 
 static int decode_open_type(uint8_t *buf, unsigned int limit, unsigned int *len, const uint8_t **p_object, unsigned int *p_num_octets)
 {
-	unsigned int octet_cnt;
-	unsigned int octet_idx;
-	unsigned int i;
-	int length; /* a negative length indicates the limit has been reached in decode_length. */
-	const uint8_t **pbuf;
-
-	for (octet_idx = 0, *p_num_octets = 0; ; octet_idx += octet_cnt) {
-		octet_cnt = 0;
-		if ((length = decode_length(buf, limit, len, &octet_cnt)) < 0)
+	unsigned int octet_cnt = 0;
+
+	if (decode_length(buf, limit, len, &octet_cnt) != 0)
+		return -1;
+
+	if (octet_cnt > 0) {
+		/* Make sure the buffer contains at least the number of bits requested */
+		if ((*len + octet_cnt) > limit)
 			return -1;
-		if (octet_cnt > 0) {
-			*p_num_octets += octet_cnt;
-
-			pbuf = &p_object[octet_idx];
-			i = 0;
-			/* Make sure the buffer contains at least the number of bits requested */
-			if ((*len + octet_cnt) > limit)
-				return -1;
-
-			*pbuf = &buf[*len];
-			*len += octet_cnt;
-		}
-		if (length == 0)
-			break;
-	}
+
+		*p_num_octets = octet_cnt;
+		*p_object = &buf[*len];
+		*len += octet_cnt;
+	}
+
 	return 0;
 }
 /*- End of function --------------------------------------------------------*/
@@ -336,8 +327,8 @@
 	const uint8_t *data;
 	unsigned int ifp_len;
 	int repaired[16];
-	const uint8_t *bufs[16];
-	unsigned int lengths[16];
+	const uint8_t *bufs[ARRAY_LEN(s->f) - 1];
+	unsigned int lengths[ARRAY_LEN(s->f) - 1];
 	int span;
 	int entries;
 	int ifp_no;
@@ -367,13 +358,13 @@
 			do {
 				if ((stat2 = decode_length(buf, len, &ptr, &count)) < 0)
 					return -1;
-				for (i = 0; i < count; i++) {
+				for (i = 0; i < count && total_count + i < ARRAY_LEN(bufs); i++) {
 					if ((stat1 = decode_open_type(buf, len, &ptr, &bufs[total_count + i], &lengths[total_count + i])) != 0)
 						return -1;
 				}
-				total_count += count;
-			}
-			while (stat2 > 0);
+				total_count += i;
+			}
+			while (stat2 > 0 && total_count < ARRAY_LEN(bufs));
 			/* Step through in reverse order, so we go oldest to newest */
 			for (i = total_count; i > 0; i--) {
 				if (seq_no - i >= s->rx_seq_no) {
@@ -436,6 +427,9 @@
 		if (ptr + 1 > len)
 			return -1;
 		entries = buf[ptr++];
+		if (entries > MAX_FEC_ENTRIES) {
+			return -1;
+		}
 		s->rx[x].fec_entries = entries;
 
 		/* Decode the elements */




More information about the asterisk-commits mailing list