summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-01-04 23:44:38 +0100
committerMichael Stahl <mstahl@redhat.com>2013-01-04 23:58:16 +0100
commit374f7465729c98f2cc8af72f876a8eab01d192a6 (patch)
treef34aee6d30508b99fe968b43fe750e6a6f637bac
parent1c52268a5bc6d79c6ee1344e4e341c7e3820d4e0 (diff)
rhbz#891082: CMXDocument::isSupported: catch exceptions
Change-Id: I715975dfa93d736cb537076feab4afe6b75c162a
-rw-r--r--libcdr/UnpackedTarball_cdr.mk1
-rw-r--r--libcdr/libcdr-issupported-exception.patch.143
2 files changed, 44 insertions, 0 deletions
diff --git a/libcdr/UnpackedTarball_cdr.mk b/libcdr/UnpackedTarball_cdr.mk
index 3b0202269333..b8b672647148 100644
--- a/libcdr/UnpackedTarball_cdr.mk
+++ b/libcdr/UnpackedTarball_cdr.mk
@@ -15,6 +15,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,cdr,1))
$(eval $(call gb_UnpackedTarball_add_patches,cdr,\
libcdr/libcdr-configure.patch.1 \
+ libcdr/libcdr-issupported-exception.patch.1 \
libcdr/libcdr-msvc.patch \
))
diff --git a/libcdr/libcdr-issupported-exception.patch.1 b/libcdr/libcdr-issupported-exception.patch.1
new file mode 100644
index 000000000000..ee4ececab474
--- /dev/null
+++ b/libcdr/libcdr-issupported-exception.patch.1
@@ -0,0 +1,43 @@
+rhbz#891082: CMXDocument::isSupported: catch exceptions
+
+diff -ru cdr.old/src/lib/CMXDocument.cpp cdr/src/lib/CMXDocument.cpp
+--- cdr.old/src/lib/CMXDocument.cpp
++++ cdr/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;
+ }
+