summaryrefslogtreecommitdiffstats
path: root/lotuswordpro/source/filter/lwpfrib.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-04-11 21:19:54 +0100
committerCaolán McNamara <caolanm@redhat.com>2011-04-11 21:41:57 +0100
commitd2a1c2d4cfa51b6ee8a7f38baa258633fae9ec6d (patch)
treeab712bc1a814bfc15def9990df0896436f346628 /lotuswordpro/source/filter/lwpfrib.cxx
parentnot useful dates in source code removed (diff)
downloadcore-d2a1c2d4cfa51b6ee8a7f38baa258633fae9ec6d.tar.gz
core-d2a1c2d4cfa51b6ee8a7f38baa258633fae9ec6d.zip
fix what there is to fix
Diffstat (limited to 'lotuswordpro/source/filter/lwpfrib.cxx')
-rw-r--r--lotuswordpro/source/filter/lwpfrib.cxx36
1 files changed, 22 insertions, 14 deletions
diff --git a/lotuswordpro/source/filter/lwpfrib.cxx b/lotuswordpro/source/filter/lwpfrib.cxx
index 398896fd7f2c..3deedc897777 100644
--- a/lotuswordpro/source/filter/lwpfrib.cxx
+++ b/lotuswordpro/source/filter/lwpfrib.cxx
@@ -337,26 +337,33 @@ void LwpFrib::RegisterStyle(LwpFoundry* pFoundry)
void LwpFrib::ReadModifiers(LwpObjectStream* pObjStrm,ModifierInfo* pModInfo)
{
- sal_uInt8 Modifier;
- sal_uInt8 len;
-// sal_Bool ModifyFlag = sal_False;
-
for(;;)
{
+ sal_uInt8 Modifier(0);
+ sal_uInt8 len(0);
+
// Get the modifier type
- pObjStrm->QuickRead(&Modifier, sizeof(Modifier));
+ if (pObjStrm->QuickRead(&Modifier, sizeof(Modifier)) != sizeof(Modifier))
+ break;
// Stop when we hit the last modifier
if (Modifier == FRIB_MTAG_NONE)
break;
-// ModifyFlag = sal_True;
+
// Get the modifier length
- pObjStrm->QuickRead(&len, sizeof(len));
+ if (pObjStrm->QuickRead(&len, sizeof(len)) != sizeof(len))
+ break;
switch (Modifier)
{
case FRIB_MTAG_FONT:
- pObjStrm->QuickRead(&pModInfo->FontID,len);
+ if (len > sizeof(pModInfo->FontID))
+ {
+ OSL_FAIL("FRIB_MTAG_FONT entry wrong size\n");
+ pObjStrm->SeekRel(len);
+ }
+ else
+ pObjStrm->QuickRead(&pModInfo->FontID,len);
break;
case FRIB_MTAG_CHARSTYLE:
pModInfo->HasCharStyle = sal_True;
@@ -367,15 +374,19 @@ void LwpFrib::ReadModifiers(LwpObjectStream* pObjStrm,ModifierInfo* pModInfo)
pModInfo->Language.Read(pObjStrm);
break;
case FRIB_MTAG_CODEPAGE:
- pObjStrm->QuickRead(&pModInfo->CodePage,len);
+ if (len > sizeof(pModInfo->CodePage))
+ {
+ OSL_FAIL("FRIB_MTAG_CODEPAGE entry wrong size\n");
+ pObjStrm->SeekRel(len);
+ }
+ else
+ pObjStrm->QuickRead(&pModInfo->CodePage,len);
break;
- //add by , 02/22/2005
case FRIB_MTAG_ATTRIBUTE:
pModInfo->aTxtAttrOverride.Read(pObjStrm);
if (pModInfo->aTxtAttrOverride.IsHighLight())
pModInfo->HasHighLight = sal_True;
break;
- //end add
case FRIB_MTAG_REVISION:
pModInfo->RevisionType = pObjStrm->QuickReaduInt8();
pModInfo->RevisionFlag = sal_True;
@@ -385,10 +396,7 @@ void LwpFrib::ReadModifiers(LwpObjectStream* pObjStrm,ModifierInfo* pModInfo)
break;
}
// TODO: read the modifier data
- // pObjStrm->SeekRel(len);
-
}
-
}
//do nothing