qt5/src/poppler-form.cc |    4 ++--
 qt6/src/poppler-form.cc |    2 +-
 utils/pdfsig.cc         |    3 +--
 3 files changed, 4 insertions(+), 5 deletions(-)

New commits:
commit 2b53d5a8ccb7350c00ef135ab40ca3562099265c
Author: Sune Vuorela <s...@vuorela.dk>
Date:   Mon Mar 20 11:48:42 2023 +0100

    Fixup for 8787103a43
    
    Some codepaths was overlooked; might lead to crashes in pdfsig.
    
    Also clean up the Qt checkpassword functions; they aren't crashers
    though.

diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc
index b56e73d0..1bead08b 100644
--- a/qt5/src/poppler-form.cc
+++ b/qt5/src/poppler-form.cc
@@ -781,11 +781,11 @@ bool CertificateInfo::checkPassword(const QString 
&password) const
 {
 #ifdef ENABLE_NSS3
     Q_D(const CertificateInfo);
-    SignatureHandler sigHandler(d->nick_name.toUtf8().constData(), 
HashAlgorithm::Sha256);
+    SignatureHandler sigHandler(d->nick_name.toStdString(), 
HashAlgorithm::Sha256);
     unsigned char buffer[5];
     memcpy(buffer, "test", 5);
     sigHandler.updateHash(buffer, 5);
-    std::unique_ptr<GooString> tmpSignature = 
sigHandler.signDetached(password.toUtf8().constData());
+    std::unique_ptr<GooString> tmpSignature = 
sigHandler.signDetached(password.toStdString());
     return tmpSignature.get() != nullptr;
 #else
     return false;
diff --git a/qt6/src/poppler-form.cc b/qt6/src/poppler-form.cc
index 05d183cb..ac138261 100644
--- a/qt6/src/poppler-form.cc
+++ b/qt6/src/poppler-form.cc
@@ -785,7 +785,7 @@ bool CertificateInfo::checkPassword(const QString 
&password) const
     unsigned char buffer[5];
     memcpy(buffer, "test", 5);
     sigHandler.updateHash(buffer, 5);
-    std::unique_ptr<GooString> tmpSignature = 
sigHandler.signDetached(password.toUtf8().constData());
+    std::unique_ptr<GooString> tmpSignature = 
sigHandler.signDetached(password.toStdString());
     return tmpSignature.get() != nullptr;
 #else
     return false;
diff --git a/utils/pdfsig.cc b/utils/pdfsig.cc
index c090f1dc..c494de3c 100644
--- a/utils/pdfsig.cc
+++ b/utils/pdfsig.cc
@@ -439,14 +439,13 @@ int main(int argc, char *argv[])
         if (etsiCAdESdetached) {
             ffs->setSignatureType(ETSI_CAdES_detached);
         }
-        const char *pw = (strlen(password) == 0) ? nullptr : password;
         const auto rs = std::unique_ptr<GooString>(reason.toStr().empty() ? 
nullptr : utf8ToUtf16WithBom(reason.toStr()));
         if (ffs->getNumWidgets() != 1) {
             printf("Unexpected number of widgets for the signature: %d\n", 
ffs->getNumWidgets());
             return 2;
         }
         FormWidgetSignature *fws = static_cast<FormWidgetSignature 
*>(ffs->getWidget(0));
-        const bool success = fws->signDocument(argv[2], certNickname, pw, 
rs.get());
+        const bool success = fws->signDocument(std::string { argv[2] }, 
std::string { certNickname }, std::string { password }, rs.get());
         return success ? 0 : 3;
     }
 

Reply via email to