summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2017-01-11 23:37:54 +0100
committerAlbert Astals Cid <aacid@kde.org>2017-01-11 23:42:49 +0100
commit4db6507320b51e060f73f7fb0eab364e8a1fee77 (patch)
treec3fa27fc18069e2f5f6a02b690a983d56196264c
parent8bb90fc828a3400a2464a38f0ec9e592754197dd (diff)
Check for error from NSS in SignatureHandler construct.
And cascading effects in other SignalHandler members. Bug #99363
-rw-r--r--poppler/SignatureHandler.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/poppler/SignatureHandler.cc b/poppler/SignatureHandler.cc
index a5132a48..71644e54 100644
--- a/poppler/SignatureHandler.cc
+++ b/poppler/SignatureHandler.cc
@@ -8,6 +8,7 @@
// Copyright 2015 André Esser <bepandre@hotmail.com>
// Copyright 2015, 2016 Albert Astals Cid <aacid@kde.org>
// Copyright 2015 Markus Kilås <digital@markuspage.com>
+// Copyright 2017 Sebastian Rasmussen <sebras@gmail.com>
//
//========================================================================
@@ -105,7 +106,8 @@ void SignatureHandler::init_nss()
SignatureHandler::SignatureHandler(unsigned char *p7, int p7_length)
- : CMSMessage(NULL),
+ : hash_context(NULL),
+ CMSMessage(NULL),
CMSSignedData(NULL),
CMSSignerInfo(NULL),
temp_certs(NULL)
@@ -115,8 +117,10 @@ SignatureHandler::SignatureHandler(unsigned char *p7, int p7_length)
CMSitem.len = p7_length;
CMSMessage = CMS_MessageCreate(&CMSitem);
CMSSignedData = CMS_SignedDataCreate(CMSMessage);
- CMSSignerInfo = CMS_SignerInfoCreate(CMSSignedData);
- hash_context = initHashContext();
+ if (CMSSignedData) {
+ CMSSignerInfo = CMS_SignerInfoCreate(CMSSignedData);
+ hash_context = initHashContext();
+ }
}
HASHContext * SignatureHandler::initHashContext()
@@ -131,7 +135,9 @@ HASHContext * SignatureHandler::initHashContext()
void SignatureHandler::updateHash(unsigned char * data_block, int data_len)
{
- HASH_Update(hash_context, data_block, data_len);
+ if (hash_context) {
+ HASH_Update(hash_context, data_block, data_len);
+ }
}
SignatureHandler::~SignatureHandler()