summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-09-11 09:32:11 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-09-11 09:54:00 +0100
commit5d8a9d56de7c1217cfdbe2288c1a3a9128c3dbb5 (patch)
treebf612a08865ec3ce33866c53227e781e26e6163e
parent419d5631a5612122f3a84f7e73d7aec26885e9db (diff)
CID#736212 clip word 2 pap bounds
and add a unit test for the word 2..5 formats Change-Id: I6c7c26be6092acbb81282080de6c393d92ad5dd4
-rw-r--r--sw/qa/core/data/ww5/fail/.gitignore0
-rw-r--r--sw/qa/core/data/ww5/indeterminate/.gitignore0
-rw-r--r--sw/qa/core/data/ww5/pass/.gitignore0
-rw-r--r--sw/qa/core/data/ww5/pass/ooo2535-1.docbin0 -> 55056 bytes
-rw-r--r--sw/qa/core/filters-test.cxx4
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx10
6 files changed, 13 insertions, 1 deletions
diff --git a/sw/qa/core/data/ww5/fail/.gitignore b/sw/qa/core/data/ww5/fail/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sw/qa/core/data/ww5/fail/.gitignore
diff --git a/sw/qa/core/data/ww5/indeterminate/.gitignore b/sw/qa/core/data/ww5/indeterminate/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sw/qa/core/data/ww5/indeterminate/.gitignore
diff --git a/sw/qa/core/data/ww5/pass/.gitignore b/sw/qa/core/data/ww5/pass/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sw/qa/core/data/ww5/pass/.gitignore
diff --git a/sw/qa/core/data/ww5/pass/ooo2535-1.doc b/sw/qa/core/data/ww5/pass/ooo2535-1.doc
new file mode 100644
index 000000000000..2c594f562347
--- /dev/null
+++ b/sw/qa/core/data/ww5/pass/ooo2535-1.doc
Binary files differ
diff --git a/sw/qa/core/filters-test.cxx b/sw/qa/core/filters-test.cxx
index 14678a4d05cd..b47abb4e94d1 100644
--- a/sw/qa/core/filters-test.cxx
+++ b/sw/qa/core/filters-test.cxx
@@ -104,6 +104,10 @@ void SwFiltersTest::testCVEs()
getURLFromSrc("/sw/qa/core/data/ww8/"),
OUString(FILTER_WW8));
+ testDir(OUString("MS WinWord 5"),
+ getURLFromSrc("/sw/qa/core/data/ww5/"),
+ OUString(sWW5));
+
testDir(OUString("Text (encoded)"),
getURLFromSrc("/sw/qa/core/data/txt/"),
OUString(FILTER_TEXT_DLG));
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 5962e9ced6b7..7f7fec15a2da 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -2496,7 +2496,15 @@ WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp(ww::WordVersion eVersion, SvStream* pSt,
{
aEntry.mnLen-=6; //PHE
//skipi stc, len byte + 6 byte PHE
- aEntry.mpData = maRawData + nOfs + 8;
+ unsigned int nOffset = nOfs + 8;
+ if (nOffset >= 511) //Bad offset
+ aEntry.mnLen=0;
+ if (aEntry.mnLen) //start is ok
+ {
+ if (nOffset + aEntry.mnLen > 512) //Bad end, clip
+ aEntry.mnLen = 512 - nOffset;
+ aEntry.mpData = maRawData + nOffset;
+ }
}
else
aEntry.mnLen=0; //Too short