summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Astals Cid <aacid@kde.org>2021-01-02 23:53:32 +0100
committerAlbert Astals Cid <aacid@kde.org>2021-01-02 23:57:29 +0100
commit7e4ec140d1cc6bef375e38f3cf3f613dd7c88bbb (patch)
tree82247809a354344402dede0751a8386ae39d42ca
parent43b5a94a610ce8fbb3d017bcdee85ac8f0be5ea4 (diff)
FormWidgetSignature::signDocument: Fix resource leak if something goes wrong
-rw-r--r--poppler/Form.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/poppler/Form.cc b/poppler/Form.cc
index b1ba7df3..5ee2d514 100644
--- a/poppler/Form.cc
+++ b/poppler/Form.cc
@@ -564,6 +564,7 @@ bool FormWidgetSignature::signDocument(const char *saveFilename, const char *cer
FILE *file = openFile(saveFilename, "r+b");
if (!updateOffsets(file, objStart, objEnd, &sigStart, &sigEnd, &fileSize)) {
fprintf(stderr, "signDocument: unable update byte range\n");
+ fclose(file);
return false;
}
@@ -574,12 +575,15 @@ bool FormWidgetSignature::signDocument(const char *saveFilename, const char *cer
// and sign it
const std::unique_ptr<GooString> signature = sigHandler.signDetached(password);
- if (!signature)
+ if (!signature) {
+ fclose(file);
return false;
+ }
// write signature to saved file
if (!updateSignature(file, sigStart, sigEnd, signature.get())) {
fprintf(stderr, "signDocument: unable update signature\n");
+ fclose(file);
return false;
}
signatureField->setSignature(*signature);