diff --git a/harbour/ChangeLog b/harbour/ChangeLog index af86b813c0..547c6f892b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2002-10-12 19:00 UTC-0300 Luiz Rafael Culik + * contrib/mysql/mysql.c + ! Fixed Buffer sizes on DATATOSQL() and FILETOSQLBINARY() It was leading to GPF due buffer underflow. + Many thanks to Peter Rees + 2002-10-11 21:35 UTC-0300 Horacio Roldan * source/rdd/dbfcdx/dbfcdx1.h * source/rdd/dbfcdx/dbfcdx2.h diff --git a/harbour/contrib/mysql/mysql.c b/harbour/contrib/mysql/mysql.c index eba7771691..966c3e83b3 100644 --- a/harbour/contrib/mysql/mysql.c +++ b/harbour/contrib/mysql/mysql.c @@ -367,14 +367,13 @@ HB_FUNC(DATATOSQL) { const char *from; int iSize; - int iLen; char *buffer; from=hb_parc(1); - iLen=hb_parclen(1)*2; - iSize=strlen(from); - buffer=(char*)hb_xgrab(iLen); - mysql_escape_string(buffer,from,iSize); - hb_retc((char*)buffer); + iSize= hb_parclen(1) ; + + buffer=(char*)hb_xgrab((iSize*2)+1); + iSize = mysql_escape_string(buffer,from,iSize); + hb_retclen((char*)buffer,iSize) ; hb_xfree(buffer); } @@ -389,13 +388,13 @@ HB_FUNC(FILETOSQLBINARY) char *FromBuffer; fh=hb_fsOpen((BYTE*)szFile,2); iSize=filelength(fh); - iLen=iSize*2; + iLen=(iSize*2); FromBuffer=(char*)hb_xgrab(iSize+1); hb_fsClose(fh); from=(char*)filetoBuff(FromBuffer,szFile); - buffer=(char*)hb_xgrab(iLen); - mysql_escape_string(buffer,from,iSize); - hb_retc((char*)buffer); + buffer=(char*)hb_xgrab(iLen+1); + iSize = mysql_escape_string(buffer,from,iSize); + hb_retclen((char*)buffer, iSize); hb_xfree(buffer); hb_xfree(FromBuffer); }