aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-01-29 09:57:41 +0000
committersaturneric <[email protected]>2024-01-29 09:57:41 +0000
commitdfd95b751d44a749d6f2cb7edf941f978cb93ccb (patch)
tree92ce44eec39dc84b8d1bcce256327d53f751b02f /src
parentfix: slove some discovered issues on windows (diff)
downloadGpgFrontend-dfd95b751d44a749d6f2cb7edf941f978cb93ccb.tar.gz
GpgFrontend-dfd95b751d44a749d6f2cb7edf941f978cb93ccb.zip
fix: solve reported issues
Diffstat (limited to 'src')
-rw-r--r--src/core/utils/GpgUtils.cpp2
-rw-r--r--src/ui/UserInterfaceUtils.cpp32
-rw-r--r--src/ui/main_window/KeyMgmt.cpp27
3 files changed, 44 insertions, 17 deletions
diff --git a/src/core/utils/GpgUtils.cpp b/src/core/utils/GpgUtils.cpp
index 75041eca..0d00b13e 100644
--- a/src/core/utils/GpgUtils.cpp
+++ b/src/core/utils/GpgUtils.cpp
@@ -131,7 +131,7 @@ auto SetExtensionOfOutputFile(const QString& path, GpgOperation opera,
return file_info.absolutePath() + "/" + file_info.completeBaseName() + "." +
new_extension;
}
- return file_info.absolutePath() + "/" + file_info.baseName();
+ return file_info.absolutePath() + "/" + file_info.completeBaseName();
}
auto SetExtensionOfOutputFileForArchive(const QString& path, GpgOperation opera,
diff --git a/src/ui/UserInterfaceUtils.cpp b/src/ui/UserInterfaceUtils.cpp
index b915b5ab..c66b9845 100644
--- a/src/ui/UserInterfaceUtils.cpp
+++ b/src/ui/UserInterfaceUtils.cpp
@@ -28,6 +28,8 @@
#include "UserInterfaceUtils.h"
+#include <cstddef>
+
#include "core/GpgConstants.h"
#include "core/function/CoreSignalStation.h"
#include "core/function/gpg/GpgKeyGetter.h"
@@ -273,19 +275,25 @@ void CommonUtils::SlotImportKeys(QWidget *parent, const QString &in_buffer) {
}
void CommonUtils::SlotImportKeyFromFile(QWidget *parent) {
- auto file_name = QFileDialog::getOpenFileName(this, tr("Open Key"), QString(),
- tr("Key Files")) +
- " (*.asc *.txt);;" + tr("Keyring files") +
- " (*.gpg);;All Files (*)";
- if (!file_name.isNull()) {
- QByteArray key_buffer;
- if (!ReadFile(file_name, key_buffer)) {
- QMessageBox::critical(nullptr, tr("File Open Failed"),
- tr("Failed to open file: ") + file_name);
- return;
- }
- SlotImportKeys(parent, key_buffer);
+ auto file_name =
+ QFileDialog::getOpenFileName(parent, tr("Open Key"), QString(),
+ tr("Keyring files") + " (*.asc *.gpg)");
+ if (file_name.isEmpty()) return;
+
+ QFileInfo file_info(file_name);
+ if (file_info.size() > static_cast<qint64>(1024 * 1024)) {
+ QMessageBox::critical(parent, tr("Error"),
+ tr("The target file is too large for a keyring."));
+ return;
+ }
+
+ QByteArray key_buffer;
+ if (!ReadFile(file_name, key_buffer)) {
+ QMessageBox::critical(nullptr, tr("File Open Failed"),
+ tr("Failed to open file: ") + file_name);
+ return;
}
+ SlotImportKeys(parent, key_buffer);
}
void CommonUtils::SlotImportKeyFromKeyServer(QWidget *parent) {
diff --git a/src/ui/main_window/KeyMgmt.cpp b/src/ui/main_window/KeyMgmt.cpp
index c9353b90..67150d85 100644
--- a/src/ui/main_window/KeyMgmt.cpp
+++ b/src/ui/main_window/KeyMgmt.cpp
@@ -529,14 +529,33 @@ void KeyMgmt::SlotExportAsOpenSSHFormat() {
void KeyMgmt::SlotImportKeyPackage() {
auto key_package_file_name = QFileDialog::getOpenFileName(
- this, tr("Import Key Package"), {},
- tr("Key Package") + " (*.gfepack);;All Files (*)");
+ this, tr("Import Key Package"), {}, tr("Key Package") + " (*.gfepack)");
+
+ if (key_package_file_name.isEmpty()) return;
+
+ // max file size is 32 mb
+ QFileInfo key_package_file_info(key_package_file_name);
+ if (key_package_file_info.size() > static_cast<qint64>(32 * 1024 * 1024)) {
+ QMessageBox::critical(
+ this, tr("Error"),
+ tr("The target file is too large for a key package."));
+ return;
+ }
auto key_file_name = QFileDialog::getOpenFileName(
this, tr("Import Key Package Passphrase File"), {},
- tr("Key Package Passphrase File") + " (*.key);;All Files (*)");
+ tr("Key Package Passphrase File") + " (*.key)");
- if (key_package_file_name.isEmpty() || key_file_name.isEmpty()) return;
+ if (key_file_name.isEmpty()) return;
+
+ // max file size is 1 mb
+ QFileInfo key_file_info(key_file_name);
+ if (key_file_info.size() > static_cast<qint64>(1024 * 1024)) {
+ QMessageBox::critical(
+ this, tr("Error"),
+ tr("The target file is too large for a key package passphrase."));
+ return;
+ }
GF_UI_LOG_INFO("importing key package: {}", key_package_file_name);
CommonUtils::WaitForOpera(