db2a8b
From 77a30e94d96220d7e22dff5b3f0a7f296f01b118 Mon Sep 17 00:00:00 2001
db2a8b
From: Adam Reichold <adam.reichold@t-online.de>
db2a8b
Date: Tue, 6 Nov 2018 09:13:41 +0100
db2a8b
Subject: [PATCH] pdfdetach: Check for valid embedded file before trying to
db2a8b
 save it.
db2a8b
db2a8b
Closes #661
db2a8b
---
db2a8b
 utils/pdfdetach.cc | 14 ++++++++++++--
db2a8b
 1 file changed, 12 insertions(+), 2 deletions(-)
db2a8b
db2a8b
diff --git a/utils/pdfdetach.cc b/utils/pdfdetach.cc
db2a8b
index 846584a4..a8720c64 100644
db2a8b
--- a/utils/pdfdetach.cc
db2a8b
+++ b/utils/pdfdetach.cc
db2a8b
@@ -251,7 +251,12 @@ int main(int argc, char *argv[]) {
db2a8b
       }
db2a8b
       *p = '\0';
db2a8b
 
db2a8b
-      if (!fileSpec->getEmbeddedFile()->save(path)) {
db2a8b
+      auto *embFile = fileSpec->getEmbeddedFile();
db2a8b
+      if (!embFile || !embFile->isOk()) {
db2a8b
+	exitCode = 3;
db2a8b
+	goto err2;
db2a8b
+      }
db2a8b
+      if (!embFile->save(path)) {
db2a8b
 	error(errIO, -1, "Error saving embedded file as '{0:s}'", p);
db2a8b
 	exitCode = 2;
db2a8b
 	goto err2;
db2a8b
@@ -296,7 +301,12 @@ int main(int argc, char *argv[]) {
db2a8b
       p = path;
db2a8b
     }
db2a8b
 
db2a8b
-    if (!fileSpec->getEmbeddedFile()->save(p)) {
db2a8b
+    auto *embFile = fileSpec->getEmbeddedFile();
db2a8b
+    if (!embFile || !embFile->isOk()) {
db2a8b
+      exitCode = 3;
db2a8b
+      goto err2;
db2a8b
+    }
db2a8b
+    if (!embFile->save(p)) {
db2a8b
       error(errIO, -1, "Error saving embedded file as '{0:s}'", p);
db2a8b
       exitCode = 2;
db2a8b
       goto err2;
db2a8b
-- 
db2a8b
2.19.1
db2a8b