You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/08/14 10:59:38 UTC
svn commit: r1372787 - in
/incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf:
svt_enhwmf.cxx svt_winwmf.cxx
Author: alg
Date: Tue Aug 14 08:59:38 2012
New Revision: 1372787
URL: http://svn.apache.org/viewvc?rev=1372787&view=rev
Log:
Added adaption of binfilter for securing polygon creations
Modified:
incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_enhwmf.cxx
incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_winwmf.cxx
Modified: incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_enhwmf.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_enhwmf.cxx?rev=1372787&r1=1372786&r2=1372787&view=diff
==============================================================================
--- incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_enhwmf.cxx (original)
+++ incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_enhwmf.cxx Tue Aug 14 08:59:38 2012
@@ -381,18 +381,26 @@ BOOL EnhWMFReader::ReadEnhWMF()
*pWMF >> nPoints;
pnPoints[ i ] = (UINT16)nPoints;
}
- // Polygonpunkte holen:
- pPtAry = (Point*) new char[ nGesPoints * sizeof(Point) ];
-
- for ( i = 0; i < nGesPoints; i++ )
- {
- *pWMF >> nX32 >> nY32;
- pPtAry[ i ] = Point( nX32, nY32 );
- }
- // PolyPolygon Actions erzeugen
- PolyPolygon aPolyPoly( (UINT16)nPoly, pnPoints, pPtAry );
+
+ PolyPolygon aPolyPoly((UINT16)nPoly, (UINT16)nPoly);
+
+ for ( i = 0; i < nPoly; i++ )
+ {
+ const sal_uInt16 nPointCount(pnPoints[i]);
+ pPtAry = new Point[nPointCount];
+
+ for(sal_uInt16 j(0); j < nPointCount; j++)
+ {
+ *pWMF >> nX32 >> nY32;
+ pPtAry[j] = Point( nX32, nY32 );
+ }
+
+ aPolyPoly.Insert(Polygon(nPointCount, pPtAry));
+ delete[] pPtAry;
+ }
+
+ // PolyPolygon Actions erzeugen
pOut->DrawPolyPolygon( aPolyPoly, bRecordPath );
- delete[] (char*) pPtAry;
delete[] pnPoints;
}
}
@@ -1116,18 +1124,26 @@ BOOL EnhWMFReader::ReadEnhWMF()
*pWMF >> nPoints;
pnPoints[ i ] = (UINT16)nPoints;
}
- // Polygonpunkte holen:
- pPtAry = (Point*) new char[ nGesPoints * sizeof(Point) ];
- for ( i = 0; i < nGesPoints; i++ )
+
+ PolyPolygon aPolyPoly((UINT16)nPoly, (UINT16)nPoly);
+
+ for ( i = 0; i < nPoly; i++ )
{
- *pWMF >> nX16 >> nY16;
- pPtAry[ i ] = Point( nX16, nY16 );
- }
+ const sal_uInt16 nPointCount(pnPoints[i]);
+ pPtAry = new Point[nPointCount];
+
+ for(sal_uInt16 j(0); j < nPointCount; j++)
+ {
+ *pWMF >> nX16 >> nY16;
+ pPtAry[j] = Point( nX16, nY16 );
+ }
+
+ aPolyPoly.Insert(Polygon(nPointCount, pPtAry));
+ delete[] pPtAry;
+ }
// PolyPolygon Actions erzeugen
- PolyPolygon aPolyPoly( (UINT16)nPoly, pnPoints, pPtAry );
pOut->DrawPolyPolygon( aPolyPoly, bRecordPath );
- delete[] (char*) pPtAry;
delete[] pnPoints;
}
}
Modified: incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_winwmf.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_winwmf.cxx?rev=1372787&r1=1372786&r2=1372787&view=diff
==============================================================================
--- incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_winwmf.cxx (original)
+++ incubator/ooo/trunk/main/binfilter/bf_svtools/source/filter.vcl/wmf/svt_winwmf.cxx Tue Aug 14 08:59:38 2012
@@ -346,14 +346,25 @@ void WMFReader::ReadRecordParams( USHORT
*pWMF >> pnPoints[i];
nPoints = nPoints + pnPoints[i];
}
- // Polygonpunkte holen:
- pPtAry = (Point*) new char[ nPoints * sizeof(Point) ];
- for ( i = 0; i < nPoints; i++ )
- pPtAry[ i ] = ReadPoint();
+
+ PolyPolygon aPolyPoly(nPoly, nPoly);
+
+ for( i = 0; i < nPoly; i++ )
+ {
+ const sal_uInt16 nPointCount(pnPoints[i]);
+ pPtAry = new Point[nPointCount];
+
+ for(sal_uInt16 j(0); j < nPointCount; j++)
+ {
+ pPtAry[j] = ReadPoint();
+ }
+
+ aPolyPoly.Insert(Polygon(nPointCount, pPtAry));
+ delete[] pPtAry;
+ }
+
// PolyPolygon Actions erzeugen
- PolyPolygon aPolyPoly( nPoly, pnPoints, pPtAry );
pOut->DrawPolyPolygon( aPolyPoly );
- delete[] (char*) pPtAry;
delete[] pnPoints;
}
break;