diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-01-04 23:44:38 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2013-01-07 09:23:23 +0000 |
commit | 2a87fd704edfea351b238ef4103ae36927f2b860 (patch) | |
tree | 6b33a273e22f24a64b00d058be9b860b802dc8ce | |
parent | 67e1040a7093a872195d0099bf15f5d0b3c2e164 (diff) |
rhbz#891082: CMXDocument::isSupported: catch exceptions
(cherry picked from commit 374f7465729c98f2cc8af72f876a8eab01d192a6)
Conflicts:
libcdr/UnpackedTarball_cdr.mk
Change-Id: I715975dfa93d736cb537076feab4afe6b75c162a
Reviewed-on: https://gerrit.libreoffice.org/1547
Reviewed-by: Miklos Vajna <vmiklos@suse.cz>
Tested-by: Miklos Vajna <vmiklos@suse.cz>
-rw-r--r-- | libcdr/libcdr-issupported-exception.patch.1 | 42 | ||||
-rwxr-xr-x | libcdr/makefile.mk | 2 |
2 files changed, 44 insertions, 0 deletions
diff --git a/libcdr/libcdr-issupported-exception.patch.1 b/libcdr/libcdr-issupported-exception.patch.1 new file mode 100644 index 000000000000..4196c466da4f --- /dev/null +++ b/libcdr/libcdr-issupported-exception.patch.1 @@ -0,0 +1,42 @@ +rhbz#891082: CMXDocument::isSupported: catch exceptions + +--- misc/libcdr-0.0.9/src/lib/CMXDocument.cpp ++++ misc/build/libcdr-0.0.9/src/lib/CMXDocument.cpp +@@ -46,20 +46,24 @@ + */ + bool libcdr::CMXDocument::isSupported(WPXInputStream *input) + { +- input->seek(0, WPX_SEEK_SET); +- unsigned riff = readU32(input); +- if (riff != FOURCC_RIFF && riff != FOURCC_RIFX) +- return false; +- input->seek(4, WPX_SEEK_CUR); +- char signature_c = (char)readU8(input); +- if (signature_c != 'C' && signature_c != 'c') +- return false; +- char signature_d = (char)readU8(input); +- if (signature_d != 'M' && signature_d != 'm') +- return false; +- char signature_r = (char)readU8(input); +- if (signature_r != 'X' && signature_r != 'x') ++ try { ++ input->seek(0, WPX_SEEK_SET); ++ unsigned riff = readU32(input); ++ if (riff != FOURCC_RIFF && riff != FOURCC_RIFX) ++ return false; ++ input->seek(4, WPX_SEEK_CUR); ++ char signature_c = (char)readU8(input); ++ if (signature_c != 'C' && signature_c != 'c') ++ return false; ++ char signature_d = (char)readU8(input); ++ if (signature_d != 'M' && signature_d != 'm') ++ return false; ++ char signature_r = (char)readU8(input); ++ if (signature_r != 'X' && signature_r != 'x') ++ return false; ++ } catch (...) { + return false; ++ } + return true; + } + diff --git a/libcdr/makefile.mk b/libcdr/makefile.mk index 0a8df79319a6..2ede9854ea3e 100755 --- a/libcdr/makefile.mk +++ b/libcdr/makefile.mk @@ -62,6 +62,8 @@ INCPRE+=$(SOLARVER)$/$(INPATH)$/inc$/lcms2 TARFILE_NAME=libcdr-0.0.9 TARFILE_MD5=3c0037fb07dea2f0bbae8386fa7c6a9a +PATCH_FILES=libcdr-issupported-exception.patch.1 + BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS) BUILD_DIR=src$/lib |