diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2022-11-18 03:11:50 -0600 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2022-11-21 02:08:32 -0600 |
commit | 4a4ac4b35fd5faf14e7143c0c8babe65c9c95e92 (patch) | |
tree | d7baad867fb90684d7d08e4221f363e72efd147f /user/trojita/statusbar-fix.patch | |
parent | 3ff4b8c8548f6b45f93367f2ea8d151844f43c8f (diff) | |
download | packages-4a4ac4b35fd5faf14e7143c0c8babe65c9c95e92.tar.gz packages-4a4ac4b35fd5faf14e7143c0c8babe65c9c95e92.tar.bz2 packages-4a4ac4b35fd5faf14e7143c0c8babe65c9c95e92.tar.xz packages-4a4ac4b35fd5faf14e7143c0c8babe65c9c95e92.zip |
user/trojita: Fix build and add patches
* Ensures Trojitá does not crash using attachments.
* Port to Qt 5.15.
* Fix a security issue with STARTTLS.
* Ensure passwords are stored correctly.
* Fix signedness on unsigned char platforms (ARM, Power).
Closes: #856
Diffstat (limited to 'user/trojita/statusbar-fix.patch')
-rw-r--r-- | user/trojita/statusbar-fix.patch | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/user/trojita/statusbar-fix.patch b/user/trojita/statusbar-fix.patch new file mode 100644 index 000000000..4eb556465 --- /dev/null +++ b/user/trojita/statusbar-fix.patch @@ -0,0 +1,167 @@ +From 654188c2806c376a4c2b9cdf44e48172c2255a18 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org> +Date: Mon, 3 Oct 2016 22:09:17 +0200 +Subject: [PATCH] GUI: Prevent excessive newlines in the PartStatusWidget + crypto messages + +Previously, there were extra newlines in certain scenarios. The long +text should never begin with a stray newline. + +This might make it easier to see the linked bug. + +Change-Id: I72188b08f1562b6cdd30849f9958fdcc9f0504b7 +CCBUG: 369832 +--- + src/Cryptography/GpgMe++.cpp | 65 ++++++++++++++++++++++++------------ + 1 file changed, 44 insertions(+), 21 deletions(-) + +diff --git a/src/Cryptography/GpgMe++.cpp b/src/Cryptography/GpgMe++.cpp +index 54275f73..e2fcdfe7 100644 +--- a/src/Cryptography/GpgMe++.cpp ++++ b/src/Cryptography/GpgMe++.cpp +@@ -290,6 +290,8 @@ QVariant GpgMePart::data(int role) const + } + } + ++#define ENSURE_LINE_LF(X) do { if (!X.isEmpty()) { X += LF; } } while (0) ++ + void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, const GpgME::Signature &sig, + const std::vector<std::string> messageUids, const bool wasSigned, const bool wasEncrypted, + bool &sigOkDisregardingTrust, bool &sigValidVerified, +@@ -447,30 +449,38 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons + + // extract the individual error bits + if (sig.summary() & GpgME::Signature::KeyRevoked) { +- longStatus += LF + tr("The key or at least one certificate has been revoked."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("The key or at least one certificate has been revoked."); + } + if (sig.summary() & GpgME::Signature::KeyExpired) { + // FIXME: how to get the expiration date? +- longStatus += LF + tr("The key or one of the certificates has expired."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("The key or one of the certificates has expired."); + } + if (sig.summary() & GpgME::Signature::SigExpired) { +- longStatus += LF + tr("Signature expired on %1.") ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature expired on %1.") + .arg(QDateTime::fromTime_t(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate)); + } + if (sig.summary() & GpgME::Signature::KeyMissing) { +- longStatus += LF + tr("Can't verify due to a missing key or certificate."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Can't verify due to a missing key or certificate."); + } + if (sig.summary() & GpgME::Signature::CrlMissing) { +- longStatus += LF + tr("The CRL (or an equivalent mechanism) is not available."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("The CRL (or an equivalent mechanism) is not available."); + } + if (sig.summary() & GpgME::Signature::CrlTooOld) { +- longStatus += LF + tr("Available CRL is too old."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Available CRL is too old."); + } + if (sig.summary() & GpgME::Signature::BadPolicy) { +- longStatus += LF + tr("A policy requirement was not met."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("A policy requirement was not met."); + } + if (sig.summary() & GpgME::Signature::SysError) { +- longStatus += LF + tr("A system error occurred. %1") ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("A system error occurred. %1") + .arg(QString::fromUtf8(sig.status().asString())); + } + +@@ -478,22 +488,28 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons + // Extract signature validity + switch (sig.validity()) { + case GpgME::Signature::Undefined: +- longStatus += LF + tr("Signature validity is undefined."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is undefined."); + break; + case GpgME::Signature::Never: +- longStatus += LF + tr("Signature validity is never to be trusted."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is never to be trusted."); + break; + case GpgME::Signature::Marginal: +- longStatus += LF + tr("Signature validity is marginal."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is marginal."); + break; + case GpgME::Signature::Full: +- longStatus += LF + tr("Signature validity is full."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is full."); + break; + case GpgME::Signature::Ultimate: +- longStatus += LF + tr("Signature validity is ultimate."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is ultimate."); + break; + case GpgME::Signature::Unknown: +- longStatus += LF + tr("Signature validity is unknown."); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Signature validity is unknown."); + break; + } + } +@@ -844,7 +860,8 @@ void GpgMeEncrypted::handleDataChanged(const QModelIndex &topLeft, const QModelI + if (tldr.isEmpty()) { + tldr = tr("Broken encrypted message"); + } +- longStatus += LF + tr("Decryption error: %1").arg(QString::fromUtf8(combinedResult.first.error().asString())); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Decryption error: %1").arg(QString::fromUtf8(combinedResult.first.error().asString())); + icon = QStringLiteral("emblem-error"); + } else if (tldr.isEmpty()) { + tldr = tr("Encrypted message"); +@@ -852,29 +869,35 @@ void GpgMeEncrypted::handleDataChanged(const QModelIndex &topLeft, const QModelI + } + + if (combinedResult.first.isWrongKeyUsage()) { +- longStatus += LF + tr("Wrong key usage, not for encryption"); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Wrong key usage, not for encryption"); + } + if (auto msg = combinedResult.first.unsupportedAlgorithm()) { +- longStatus += LF + tr("Unsupported algorithm: %1").arg(QString::fromUtf8(msg)); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Unsupported algorithm: %1").arg(QString::fromUtf8(msg)); + } + + for (const auto &recipient: combinedResult.first.recipients()) { + GpgME::Error keyError; + auto key = ctx->key(recipient.keyID(), keyError, false); + if (keyError) { +- longStatus += LF + tr("Cannot extract recipient %1: %2") ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Cannot extract recipient %1: %2") + .arg(QString::fromUtf8(recipient.keyID()), QString::fromUtf8(keyError.asString())); + } else { + if (key.numUserIDs()) { +- longStatus += LF + tr("Encrypted to %1 (%2)") ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Encrypted to %1 (%2)") + .arg(QString::fromUtf8(key.userID(0).id()), QString::fromUtf8(recipient.keyID())); + } else { +- longStatus += LF + tr("Encrypted to %1").arg(QString::fromUtf8(recipient.keyID())); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Encrypted to %1").arg(QString::fromUtf8(recipient.keyID())); + } + } + } + if (auto fname = combinedResult.first.fileName()) { +- longStatus += LF + tr("Original filename: %1").arg(QString::fromUtf8(fname)); ++ ENSURE_LINE_LF(longStatus); ++ longStatus += tr("Original filename: %1").arg(QString::fromUtf8(fname)); + } + + if (p) { +-- +GitLab + |