r2836 - trunk/libmsip/source/headers

erik at minisip.org erik at minisip.org
Tue Oct 17 15:10:23 CEST 2006


Author: erik
Date: 2006-10-17 15:10:22 +0200 (Tue, 17 Oct 2006)
New Revision: 2836

Modified:
   trunk/libmsip/source/headers/SipHeaderCSeq.cxx
Log:

 * Bug fixes for CSeq header:
   - Fixed potential buffer overflow
   - Fixed support for '\t' and '\n' whitespace



Modified: trunk/libmsip/source/headers/SipHeaderCSeq.cxx
===================================================================
--- trunk/libmsip/source/headers/SipHeaderCSeq.cxx	2006-10-17 13:09:50 UTC (rev 2835)
+++ trunk/libmsip/source/headers/SipHeaderCSeq.cxx	2006-10-17 13:10:22 UTC (rev 2836)
@@ -51,23 +51,23 @@
 const string sipHeaderValueCSeqTypeStr = "CSeq";
 
 SipHeaderValueCSeq::SipHeaderValueCSeq(const string &build_from):SipHeaderValue(SIP_HEADER_TYPE_CSEQ,sipHeaderValueCSeqTypeStr){
+	unsigned maxlen=build_from.size();
 	unsigned i=0;
-	while (build_from[i]==' ')
+
+	while (i<maxlen && isWS(build_from[i]))
 		i++;
+
 	string num;
-	while ((build_from[i]>='0' && build_from[i]<='9') || build_from[i]=='-'){
+	while (i<maxlen && (build_from[i]>='0' && build_from[i]<='9') || build_from[i]=='-'){
 		num+=build_from[i];
 		i++;
 	}
 	
-	while (build_from[i]==' ')
+	while (i<maxlen && isWS(build_from[i]) )
 		i++;
-	
-	method="";
-	while (!(i>=build_from.length())){
-		method+=build_from[i];
-		i++;
-	}
+
+	method = build_from.substr(i);
+
 	setCSeq(atoi((trim(num)).c_str()));
 }
 



More information about the Minisip-devel mailing list