[Libreoffice-commits] .: 2 commits - sw/qa sw/source

Caolán McNamara caolan at kemper.freedesktop.org
Sun Jul 3 04:37:06 PDT 2011


 sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc |binary
 sw/source/filter/html/css1atr.cxx            |  140 ++++++++++++++-------------
 sw/source/filter/html/htmlatr.cxx            |   38 ++++---
 3 files changed, 94 insertions(+), 84 deletions(-)

New commits:
commit 22aaea1238decb1c301136f76cb6ede35226bccb
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jul 3 12:29:08 2011 +0100

    add another regression test here, an expected fail

diff --git a/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc b/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc
new file mode 100644
index 0000000..18b300c
Binary files /dev/null and b/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc differ
commit 4e3d2b06bf40c9ffd36239262d1b3fd1757d6537
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Jul 2 23:50:20 2011 +0100

    ByteString::CreateFromInt32 -> OString::valueOf

diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index a44b5d8..a71d538 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -186,7 +186,7 @@ static Writer& OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( Writer& rWrt,
                                         sal_Bool bDeep );
 static Writer& OutCSS1_SwFmtLayoutSplit( Writer& rWrt, const SfxPoolItem& rHt );
 
-static void ConvToHex( sal_uInt16 nHex, ByteString& rStr )
+static rtl::OString ConvToHex(sal_uInt16 nHex)
 {
     sal_Char aNToABuf[] = "00";
 
@@ -200,16 +200,19 @@ static void ConvToHex( sal_uInt16 nHex, ByteString& rStr )
         nHex >>= 4;
     }
 
-    rStr.Append( aNToABuf );
+    return rtl::OString(aNToABuf, 2);
 }
 
-static void GetCSS1Color( const Color& rColor, ByteString& rStr )
+static rtl::OString GetCSS1Color(const Color& rColor)
 {
-    rStr += '#';
+    rtl::OStringBuffer aStr;
+    aStr.append('#');
 
-    ConvToHex( rColor.GetRed(), rStr );
-    ConvToHex( rColor.GetGreen(), rStr );
-    ConvToHex( rColor.GetBlue(), rStr );
+    aStr.append(ConvToHex(rColor.GetRed()));
+    aStr.append(ConvToHex(rColor.GetGreen()));
+    aStr.append(ConvToHex(rColor.GetBlue()));
+
+    return aStr.makeStringAndClear();
 }
 
 class SwCSS1OutMode
@@ -501,9 +504,10 @@ void SwHTMLWriter::OutCSS1_PixelProperty( const sal_Char *pProp, long nVal,
             nVal = 1;
     }
 
-    ByteString sOut( ByteString::CreateFromInt32( nVal ) );
-    sOut.Append( sCSS1_UNIT_px );
-    OutCSS1_PropertyAscii( pProp, sOut );
+    rtl::OStringBuffer sOut;
+    sOut.append(static_cast<sal_Int32>(nVal));
+    sOut.append(sCSS1_UNIT_px);
+    OutCSS1_PropertyAscii(pProp, sOut.makeStringAndClear());
 }
 
 void SwHTMLWriter::OutCSS1_SfxItemSet( const SfxItemSet& rItemSet,
@@ -2419,9 +2423,7 @@ void SwHTMLWriter::OutCSS1_FrmFmtBackground( const SwFrmFmt& rFrmFmt )
                 aColor = pVSh->GetViewOptions()->GetRetoucheColor().GetColor();
         }
 
-        ByteString sOut;
-        GetCSS1Color(aColor, sOut);
-        OutCSS1_PropertyAscii(sCSS1_P_background, sOut);
+        OutCSS1_PropertyAscii(sCSS1_P_background, GetCSS1Color(aColor));
     }
 }
 
@@ -2603,10 +2605,7 @@ static Writer& OutCSS1_SvxColor( Writer& rWrt, const SfxPoolItem& rHt )
     if( COL_AUTO == aColor.GetColor() )
         aColor.SetColor( COL_BLACK );
 
-    ByteString sOut;
-    GetCSS1Color( aColor, sOut );
-
-    rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_color, sOut );
+    rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_color, GetCSS1Color(aColor));
 
     return rWrt;
 }
@@ -2683,11 +2682,12 @@ static Writer& OutCSS1_SvxFontHeight( Writer& rWrt, const SfxPoolItem& rHt )
         if( rHTMLWrt.aFontHeights[nSize-1] == nHeight )
             return rWrt;
     }
-    ByteString sHeight( ByteString::CreateFromInt32(
-                                            (sal_Int32)(nHeight/20) ) );
-    sHeight.Append( sCSS1_UNIT_pt );
 
-    rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size, sHeight );
+    rtl::OStringBuffer sHeight;
+    sHeight.append(static_cast<sal_Int32>(nHeight/20));
+    sHeight.append(sCSS1_UNIT_pt);
+    rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_font_size,
+        sHeight.makeStringAndClear());
 
     return rWrt;
 }
@@ -2741,21 +2741,22 @@ static Writer& OutCSS1_SvxKerning( Writer& rWrt, const SfxPoolItem& rHt )
     sal_Int16 nValue = ((const SvxKerningItem&)rHt).GetValue();
     if( nValue )
     {
-        ByteString sOut;
+        rtl::OStringBuffer sOut;
         if( nValue < 0 )
         {
-            sOut = '-';
+            sOut.append('-');
             nValue = -nValue;
         }
 
         // Breite als n.n pt
         nValue = (nValue + 1) / 2; 	// 1/10pt
-        sOut.Append( ByteString::CreateFromInt32( (sal_Int32)(nValue  / 10) ) );
-        sOut.Append( '.' );
-        sOut.Append( ByteString::CreateFromInt32( (sal_Int32)(nValue % 10) ) );
-        sOut.Append( sCSS1_UNIT_pt );
+        sOut.append(static_cast<sal_Int32>(nValue  / 10));
+        sOut.append('.');
+        sOut.append(static_cast<sal_Int32>(nValue % 10));
+        sOut.append(sCSS1_UNIT_pt);
 
-        rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_letter_spacing, sOut );
+        rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_letter_spacing,
+            sOut.makeStringAndClear());
     }
     else
     {
@@ -2924,14 +2925,14 @@ static Writer& OutCSS1_SvxLineSpacing( Writer& rWrt, const SfxPoolItem& rHt )
         rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_line_height, (long)nHeight );
     else if( nPrcHeight )
     {
-        ByteString sHeight(
-                ByteString::CreateFromInt32( (sal_Int32)nPrcHeight ) );
-        sHeight += '%';
-        rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_line_height, sHeight );
+        rtl::OStringBuffer sHeight;
+        sHeight.append(static_cast<sal_Int32>(nPrcHeight));
+        sHeight.append('%');
+        rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_line_height,
+            sHeight.makeStringAndClear());
     }
 
     return rWrt;
-
 }
 
 static Writer& OutCSS1_SvxAdjust( Writer& rWrt, const SfxPoolItem& rHt )
@@ -2989,8 +2990,8 @@ static Writer& OutCSS1_SvxWidows( Writer& rWrt, const SfxPoolItem& rHt )
 {
     SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
 
-    ByteString aStr(
-        ByteString::CreateFromInt32( ((const SvxWidowsItem&)rHt).GetValue() ) );
+    rtl::OString aStr(rtl::OString::valueOf(static_cast<sal_Int32>(
+        ((const SvxWidowsItem&)rHt).GetValue())));
     rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_widows, aStr );
 
     return rWrt;
@@ -3000,8 +3001,8 @@ static Writer& OutCSS1_SvxOrphans( Writer& rWrt, const SfxPoolItem& rHt )
 {
     SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
 
-    ByteString aStr(
-       ByteString::CreateFromInt32( ((const SvxOrphansItem&)rHt).GetValue() ) );
+    rtl::OString aStr(rtl::OString::valueOf(static_cast<sal_Int32>(
+       ((const SvxOrphansItem&)rHt).GetValue())));
     rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_orphans, aStr );
 
     return rWrt;
@@ -3015,9 +3016,10 @@ static void OutCSS1_SwFmtDropAttrs( SwHTMLWriter& rHWrt,
     rHWrt.OutCSS1_PropertyAscii( sCSS1_P_float, sCSS1_PV_left );
 
     // Anzahl der Zeilen -> %-Angabe fuer Font-Hoehe!
-    ByteString sOut( ByteString::CreateFromInt32( rDrop.GetLines()*100 ) );
-    sOut += '%';
-    rHWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size, sOut );
+    rtl::OStringBuffer sOut;
+    sOut.append(static_cast<sal_Int32>(rDrop.GetLines()*100));
+    sOut.append('%');
+    rHWrt.OutCSS1_PropertyAscii(sCSS1_P_font_size, sOut.makeStringAndClear());
 
     // Abstand zum Text = rechter Rand
     sal_uInt16 nDistance = rDrop.GetDistance();
@@ -3064,7 +3066,6 @@ static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
 {
     SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
 
-    ByteString sOut;
     const SwFmtFrmSize& rFSItem = (const SwFmtFrmSize&)rHt;
 
     if( nMode & CSS1_FRMSIZE_WIDTH )
@@ -3072,8 +3073,11 @@ static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
         sal_uInt8 nPrcWidth = rFSItem.GetWidthPercent();
         if( nPrcWidth )
         {
-            (sOut = ByteString::CreateFromInt32( nPrcWidth) ) += '%';
-            rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_width, sOut );
+            rtl::OStringBuffer sOut;
+            sOut.append(static_cast<sal_Int32>(nPrcWidth));
+            sOut.append('%');
+            rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_width,
+                sOut.makeStringAndClear());
         }
         else if( nMode & CSS1_FRMSIZE_PIXEL )
         {
@@ -3111,8 +3115,11 @@ static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
             sal_uInt8 nPrcHeight = rFSItem.GetHeightPercent();
             if( nPrcHeight )
             {
-                (sOut = ByteString::CreateFromInt32( nPrcHeight ) ) += '%';
-                rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_height, sOut );
+                rtl::OStringBuffer sOut;
+                sOut.append(static_cast<sal_Int32>(nPrcHeight));
+                sOut.append('%');
+                rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_height,
+                    sOut.makeStringAndClear());
             }
             else if( nMode & CSS1_FRMSIZE_PIXEL )
             {
@@ -3493,9 +3500,9 @@ static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
     {
         if( bColor )
         {
-            ByteString sTmp;
-            GetCSS1Color( aColor, sTmp );
-            sOut += String( sTmp, RTL_TEXTENCODING_ASCII_US );
+            rtl::OString sTmp(GetCSS1Color(aColor));
+            sOut += String(rtl::OStringToOUString(sTmp,
+                RTL_TEXTENCODING_ASCII_US));
         }
 
         if( pLink )
@@ -3550,38 +3557,37 @@ static void OutCSS1_SvxBorderLine( SwHTMLWriter& rHTMLWrt,
 
     sal_Int32 nWidth = pLine->GetWidth();
 
-    ByteString sOut;
+    rtl::OStringBuffer sOut;
     if( Application::GetDefaultDevice() &&
         nWidth <= Application::GetDefaultDevice()->PixelToLogic(
                     Size( 1, 1 ), MapMode( MAP_TWIP) ).Width() )
     {
         // Wenn die Breite kleiner ist als ein Pixel, dann als 1px
         // ausgeben, damit Netscape und IE die Linie auch darstellen.
-        sOut += "1px";
+        sOut.append(RTL_CONSTASCII_STRINGPARAM("1px"));
     }
     else
     {
         nWidth *= 5; 	// 1/100pt
 
         // Breite als n.nn pt
-        sOut += ByteString::CreateFromInt32( nWidth / 100 );
-        (((sOut += '.')
-            += ByteString::CreateFromInt32((nWidth/10) % 10))
-            += ByteString::CreateFromInt32(nWidth % 10)) += sCSS1_UNIT_pt;
+        sOut.append(static_cast<sal_Int32>(nWidth / 100));
+        sOut.append('.').append(static_cast<sal_Int32>((nWidth/10) % 10)).
+            append(static_cast<sal_Int32>(nWidth % 10)).append(sCSS1_UNIT_pt);
     }
 
     // Linien-Stil: solid oder double
-    sOut += ' ';
+    sOut.append(' ');
     switch ( pLine->GetStyle( ) )
     {
         case ::editeng::SOLID:
-            sOut += sCSS1_PV_solid;
+            sOut.append(sCSS1_PV_solid);
             break;
         case ::editeng::DOTTED:
-            sOut += sCSS1_PV_dotted;
+            sOut.append(sCSS1_PV_dotted);
             break;
         case ::editeng::DASHED:
-            sOut += sCSS1_PV_dashed;
+            sOut.append(sCSS1_PV_dashed);
             break;
         case ::editeng::DOUBLE:
         case ::editeng::THINTHICK_SMALLGAP:
@@ -3590,29 +3596,29 @@ static void OutCSS1_SvxBorderLine( SwHTMLWriter& rHTMLWrt,
         case ::editeng::THICKTHIN_SMALLGAP:
         case ::editeng::THICKTHIN_MEDIUMGAP:
         case ::editeng::THICKTHIN_LARGEGAP:
-            sOut += sCSS1_PV_double;
+            sOut.append(sCSS1_PV_double);
             break;
         case ::editeng::EMBOSSED:
-            sOut += sCSS1_PV_ridge;
+            sOut.append(sCSS1_PV_ridge);
             break;
         case ::editeng::ENGRAVED:
-            sOut += sCSS1_PV_groove;
+            sOut.append(sCSS1_PV_groove);
             break;
         case ::editeng::INSET:
-            sOut += sCSS1_PV_inset;
+            sOut.append(sCSS1_PV_inset);
             break;
         case ::editeng::OUTSET:
-            sOut += sCSS1_PV_outset;
+            sOut.append(sCSS1_PV_outset);
             break;
         default:
-            sOut += sCSS1_PV_none;
+            sOut.append(sCSS1_PV_none);
     }
-    sOut += ' ';
+    sOut.append(' ');
 
     // und noch die Farbe
-    GetCSS1Color( pLine->GetColor(), sOut );
+    sOut.append(GetCSS1Color(pLine->GetColor()));
 
-    rHTMLWrt.OutCSS1_PropertyAscii( pProperty, sOut );
+    rHTMLWrt.OutCSS1_PropertyAscii(pProperty, sOut.makeStringAndClear());
 }
 
 Writer& OutCSS1_SvxBox( Writer& rWrt, const SfxPoolItem& rHt )
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
index f7a0ec1..86fff26 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -91,6 +91,7 @@
 #include <wrthtml.hxx>
 #include <htmlfly.hxx>
 #include <numrule.hxx>
+#include <rtl/strbuf.hxx>
 
 using namespace ::com::sun::star;
 
@@ -147,13 +148,14 @@ static Writer& OutHTML_HoriSpacer( Writer& rWrt, sal_Int16 nSize )
             ->LogicToPixel( Size(nSize,0), MapMode(MAP_TWIP) ).Width();
     }
 
-    ByteString sOut( '<' );
-    (((((((((sOut += OOO_STRING_SVTOOLS_HTML_spacer)
-        += ' ') += OOO_STRING_SVTOOLS_HTML_O_type) += '=') += OOO_STRING_SVTOOLS_HTML_SPTYPE_horizontal)
-        += ' ') += OOO_STRING_SVTOOLS_HTML_O_size) += '=')
-                        +=ByteString::CreateFromInt32(nSize)) += '>';
+    rtl::OStringBuffer sOut;
+    sOut.append('<').append(OOO_STRING_SVTOOLS_HTML_spacer).append(' ').
+         append(OOO_STRING_SVTOOLS_HTML_O_type).append('=').
+         append(OOO_STRING_SVTOOLS_HTML_SPTYPE_horizontal).append(' ').
+         append(OOO_STRING_SVTOOLS_HTML_O_size).append('=').
+         append(static_cast<sal_Int32>(nSize)).append('>');
 
-    rWrt.Strm() << sOut.GetBuffer();
+    rWrt.Strm() << sOut.getStr();
 
     return rWrt;
 }
@@ -920,13 +922,15 @@ void OutHTML_SwFmt( Writer& rWrt, const SwFmt& rFmt,
     // ggf ein List-Item aufmachen
     if( rInfo.bInNumBulList && bNumbered )
     {
-        ByteString sOut( '<' );
-        sOut += OOO_STRING_SVTOOLS_HTML_li;
+        rtl::OStringBuffer sOut;
+        sOut.append('<').append(OOO_STRING_SVTOOLS_HTML_li);
         if( USHRT_MAX != nNumStart )
-            (((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_value) += '=')
-                += ByteString::CreateFromInt32(nNumStart);
-        sOut += '>';
-        rWrt.Strm() << sOut.GetBuffer();
+        {
+            sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_value).
+                 append('=').append(static_cast<sal_Int32>(nNumStart));
+        }
+        sOut.append('>');
+        rWrt.Strm() << sOut.getStr();
     }
 
     if( rHWrt.nDefListLvl > 0 && !bForceDL )
@@ -2855,14 +2859,14 @@ static Writer& OutHTML_SvxFontHeight( Writer& rWrt, const SfxPoolItem& rHt )
 
     if( rHTMLWrt.bTagOn )
     {
-        ByteString sOut( '<' );
-        sOut += OOO_STRING_SVTOOLS_HTML_font;
+        rtl::OStringBuffer sOut;
+        sOut.append('<').append(OOO_STRING_SVTOOLS_HTML_font);
 
         sal_uInt32 nHeight = ((const SvxFontHeightItem&)rHt).GetHeight();
         sal_uInt16 nSize = rHTMLWrt.GetHTMLFontSize( nHeight );
-        (((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_size) += '=')
-            += ByteString::CreateFromInt32( nSize );
-        rWrt.Strm() << sOut.GetBuffer();
+        sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_size).append('=').
+             append(static_cast<sal_Int32>(nSize));
+        rWrt.Strm() << sOut.getStr();
 
         if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr &&
             rHTMLWrt.aFontHeights[nSize-1] != nHeight )


More information about the Libreoffice-commits mailing list