Skip to content

Commit b187825

Browse files
committedFeb 4, 2015
Fix memory leak in MsSql provider (identified by Coverity)
1 parent 9e9a289 commit b187825

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed
 

‎src/providers/mssql/qgsmssqlgeometryparser.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void QgsMssqlGeometryParser::CopyBytes( void* src, int len )
164164
QgsDebugMsg( "CopyBytes wkb buffer realloc" );
165165
unsigned char* pszWkbTmp = new unsigned char[nWkbLen + len + 100];
166166
memcpy( pszWkbTmp, pszWkb, nWkbLen );
167-
delete pszWkb;
167+
delete[] pszWkb;
168168
pszWkb = pszWkbTmp;
169169
nWkbMaxLen = nWkbLen + len + 100;
170170
}
@@ -499,7 +499,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
499499

500500
if ( nLen < 6 + nPointSize )
501501
{
502-
free( pszWkb );
502+
delete [] pszWkb;
503503
QgsDebugMsg( "ParseSqlGeometry not enough data" );
504504
DumpMemoryToLog( "Not enough data", pszInput, nLen );
505505
return NULL;
@@ -515,7 +515,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
515515

516516
if ( nLen < 6 + 2 * nPointSize )
517517
{
518-
free( pszWkb );
518+
delete [] pszWkb;
519519
QgsDebugMsg( "ParseSqlGeometry not enough data" );
520520
DumpMemoryToLog( "Not enough data", pszInput, nLen );
521521
return NULL;
@@ -544,7 +544,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
544544

545545
if ( nNumPoints <= 0 )
546546
{
547-
free( pszWkb );
547+
delete [] pszWkb;
548548
return NULL;
549549
}
550550

@@ -556,7 +556,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
556556

557557
if ( nLen < nFigurePos )
558558
{
559-
free( pszWkb );
559+
delete [] pszWkb;
560560
QgsDebugMsg( "ParseSqlGeometry not enough data" );
561561
DumpMemoryToLog( "Not enough data", pszInput, nLen );
562562
return NULL;
@@ -566,7 +566,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
566566

567567
if ( nNumFigures <= 0 )
568568
{
569-
free( pszWkb );
569+
delete [] pszWkb;
570570
return NULL;
571571
}
572572

@@ -575,7 +575,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
575575

576576
if ( nLen < nShapePos )
577577
{
578-
free( pszWkb );
578+
delete [] pszWkb;
579579
QgsDebugMsg( "ParseSqlGeometry not enough data" );
580580
DumpMemoryToLog( "Not enough data", pszInput, nLen );
581581
return NULL;
@@ -585,22 +585,22 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
585585

586586
if ( nLen < nShapePos + 9 * nNumShapes )
587587
{
588-
free( pszWkb );
588+
delete [] pszWkb;
589589
QgsDebugMsg( "ParseSqlGeometry not enough data" );
590590
DumpMemoryToLog( "Not enough data", pszInput, nLen );
591591
return NULL;
592592
}
593593

594594
if ( nNumShapes <= 0 )
595595
{
596-
free( pszWkb );
596+
delete [] pszWkb;
597597
return NULL;
598598
}
599599

600600
// pick up the root shape
601601
if ( ParentOffset( 0 ) != 0xFFFFFFFF )
602602
{
603-
free( pszWkb );
603+
delete [] pszWkb;
604604
QgsDebugMsg( "ParseSqlGeometry corrupt data" );
605605
DumpMemoryToLog( "Not enough data", pszInput, nLen );
606606
return NULL;
@@ -631,7 +631,7 @@ unsigned char* QgsMssqlGeometryParser::ParseSqlGeometry( unsigned char* pszInput
631631
//ReadGeometryCollection(0);
632632
//break;
633633
default:
634-
free( pszWkb );
634+
delete [] pszWkb;
635635
QgsDebugMsg( "ParseSqlGeometry unsupported geometry type" );
636636
DumpMemoryToLog( "Unsupported geometry type", pszInput, nLen );
637637
return NULL;

0 commit comments

Comments
 (0)
Please sign in to comment.