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