bug on x86_64 + patch

Martin Oberzalek <[email protected]> Tue, 22 Feb 2005 21:11:51 +0100
Newsgroups gmane.comp.gcc.cgicc.bugs
Message-ID <[email protected]>
--Boundary-00=_HI5GCHy7/NerzSn
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello,

There is a bug in CgiUtils.cpp that effects forms with multipart/form-data =
on=20
platforms where sizeof(unsigned) < sizeof( std::string::size_type)

// locate data between separators, and return it
std::string
cgicc::extractBetween(const std::string& data,
              const std::string& separator1,
              const std::string& separator2)
{
  std::string result;
  unsigned int start, limit;

  start =3D data.find(separator1, 0);
  if(start !=3D std::string::npos) {
    start +=3D separator1.length();
    limit =3D data.find(separator2, start);
    if(limit !=3D std::string::npos)
      result =3D data.substr(start, limit - start);
  }

  return result;
}


Since std::string::npos is a castet -1. The if statement will always be tru=
e.

The patch below fixes this.

Greetings, Martin!

diff -r cgicc-3.2.3-p1/cgicc/Cgicc.cpp cgicc-3.2.3/cgicc/Cgicc.cpp
40d39
<
diff -r cgicc-3.2.3-p1/cgicc/CgiUtils.cpp cgicc-3.2.3/cgicc/CgiUtils.cpp
214c214
<   std::string::size_type start, limit;
=2D--
>   unsigned int start, limit;
222,223c222,223
<   }
<
=2D--
>   }
>

=2D-=20
Gebrauchtwagen =3D>  http://www.austromobil.at
Genie=DFen Sie die Fahrt!

--Boundary-00=_HI5GCHy7/NerzSn
Content-Type: text/x-diff; charset="us-ascii"; name="cgicc-3.2.3-x86_64-patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="cgicc-3.2.3-x86_64-patch"

diff -r cgicc-3.2.3-p1/cgicc/Cgicc.cpp cgicc-3.2.3/cgicc/Cgicc.cpp
40d39
< 
diff -r cgicc-3.2.3-p1/cgicc/CgiUtils.cpp cgicc-3.2.3/cgicc/CgiUtils.cpp
214c214
<   std::string::size_type start, limit;
---
>   unsigned int start, limit;
222,223c222,223
<   } 
< 
---
>   }
>   

--Boundary-00=_HI5GCHy7/NerzSn
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

--Boundary-00=_HI5GCHy7/NerzSn--