diff options
author | Albert Astals Cid <aacid@kde.org> | 2021-01-02 23:53:32 +0100 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2021-01-02 23:57:29 +0100 |
commit | 7e4ec140d1cc6bef375e38f3cf3f613dd7c88bbb (patch) | |
tree | 82247809a354344402dede0751a8386ae39d42ca | |
parent | 43b5a94a610ce8fbb3d017bcdee85ac8f0be5ea4 (diff) |
FormWidgetSignature::signDocument: Fix resource leak if something goes wrong
-rw-r--r-- | poppler/Form.cc | 6 |
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); |