64bit bug in multipart/formdata uploads

Jim Hull <[email protected]> Tue, 01 May 2007 17:10:37 -0700
Newsgroups gmane.comp.gcc.cgicc.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------040208010803040107040102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

This is a simple string::size_type vs u_int bug I found today while 
testing our tools on a 64bit platform.

inside extractBetween(), 'start' is declared as 'unsigned int' and then 
tested against std::string::npos, which on a 64bit system will always be 
false.

Iv'e attached a patch with the fix.

Thanks!

	Jim

--------------040208010803040107040102
Content-Type: text/plain;
 name="cgicc-3.2.3-badformdata.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="cgicc-3.2.3-badformdata.patch"

diff -ruwN cgicc-3.2.3/cgicc/CgiUtils.cpp cgicc-3.2.3-jim/cgicc/CgiUtils.cpp
--- cgicc-3.2.3/cgicc/CgiUtils.cpp	2004-06-12 08:24:31.000000000 -0700
+++ cgicc-3.2.3-jim/cgicc/CgiUtils.cpp	2007-05-01 16:56:30.000000000 -0700
@@ -211,7 +211,7 @@
 		      const std::string& separator2)
 {
   std::string result;
-  unsigned int start, limit;
+  std::string::size_type start, limit;
   
   start = data.find(separator1, 0);
   if(start != std::string::npos) {

--------------040208010803040107040102
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
bug-cgicc mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-cgicc

--------------040208010803040107040102--