forked from pool/profanity
Fix crash upon /plugins install while disconnected OBS-URL: https://build.opensuse.org/package/show/network:messaging:xmpp/profanity?expand=0&rev=16
57 lines
2.2 KiB
Diff
57 lines
2.2 KiB
Diff
From b88174709f82407624ac058473a71a8b37ed9a10 Mon Sep 17 00:00:00 2001
|
|
From: Michael Vetter <jubalh@iodoru.org>
|
|
Date: Mon, 28 Aug 2023 07:55:29 +0200
|
|
Subject: [PATCH] Don't crash when using `/plugins install` disconnected
|
|
|
|
When we are not connected and run `/plugins install` we crash because we
|
|
get the account struct to check for the (xmpp) tls setting.
|
|
To apply that to the http (etc) connection to download the plugin from a
|
|
server.
|
|
|
|
This got introduced in 3a86b8c29 to fix #1624.
|
|
|
|
There are several ways to handle this (some described in 1880) in this
|
|
patch I took the route that it will use secure connection when we are
|
|
nto connected and will only check the tls.trust account setting if we
|
|
are connected.
|
|
|
|
Fix https://github.com/profanity-im/profanity/issues/1880
|
|
---
|
|
src/tools/http_download.c | 5 ++++-
|
|
src/tools/http_upload.c | 5 ++++-
|
|
2 files changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/tools/http_download.c b/src/tools/http_download.c
|
|
index 6be74bedc..b58e9290b 100644
|
|
--- a/src/tools/http_download.c
|
|
+++ b/src/tools/http_download.c
|
|
@@ -134,7 +134,10 @@ http_file_get(void* userdata)
|
|
gchar* cert_path = prefs_get_string(PREF_TLS_CERTPATH);
|
|
gchar* cafile = cafile_get_name();
|
|
ProfAccount* account = accounts_get_account(session_get_account_name());
|
|
- gboolean insecure = account->tls_policy && strcmp(account->tls_policy, "trust") == 0;
|
|
+ gboolean insecure = FALSE;
|
|
+ if (account) {
|
|
+ insecure = account->tls_policy && strcmp(account->tls_policy, "trust") == 0;
|
|
+ }
|
|
account_free(account);
|
|
pthread_mutex_unlock(&lock);
|
|
|
|
diff --git a/src/tools/http_upload.c b/src/tools/http_upload.c
|
|
index 8be560092..3b3945f3e 100644
|
|
--- a/src/tools/http_upload.c
|
|
+++ b/src/tools/http_upload.c
|
|
@@ -186,8 +186,11 @@ http_file_put(void* userdata)
|
|
|
|
auto_gchar gchar* cert_path = prefs_get_string(PREF_TLS_CERTPATH);
|
|
gchar* cafile = cafile_get_name();
|
|
+ gboolean insecure = FALSE;
|
|
ProfAccount* account = accounts_get_account(session_get_account_name());
|
|
- gboolean insecure = account->tls_policy && strcmp(account->tls_policy, "trust") == 0;
|
|
+ if (account) {
|
|
+ insecure = account->tls_policy && strcmp(account->tls_policy, "trust") == 0;
|
|
+ }
|
|
account_free(account);
|
|
pthread_mutex_unlock(&lock);
|
|
|