1 Commits

Author SHA256 Message Date
b7f97dce56 Sync changes to SLFO-1.2 branch 2025-08-20 13:36:48 +02:00
11 changed files with 635 additions and 40 deletions

View File

@@ -1,4 +0,0 @@
mtime: 1734001585
commit: 46bea0264513c39e6ae4994587410457fe0ffb8fe1ccbd431d7a7fd338768f89
url: https://src.opensuse.org/jengelh/strongswan
revision: master

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:62325c078f84c3007f3e88be6d0258f3d5640ece9cb801076c8399991d05869a
size 256

BIN
strongswan-6.0.0.tar.bz2 (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,14 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEElI8Vik52onvz0HUy30LBcLNNuncFAmdO+hMACgkQ30LBcLNN
undilgwAgiT5p2PyMhwSp4qo1EUX8+PWwJ9Plqz7TNCCdFJe3uYre3hM2K5hFey0
azrPrqZ2HWtBycH0gI4BFzUSVO8E4SZOBQnPH/g3bsFg9VU71ML30LdZYx+Lg7wK
7AaMxYhl7xIvfb4D8+ZpYV6bSDH0o2tRN5h5gPk4IECOTTRhsLWL89IL8xOXgNPj
ao0meIUNfvg6cl1uLFff/c7H7cAGSFsKPSWtMWLfK0PglW4LVJJvr5PhGsduVPsE
JwY2VAMVi1BI1Y7I1WxS7T1qEAXLKAuNHKJHgIvd3xvSM1Q197qFrGyuujDQV5Yn
Olp583ccs2LJbfmDQiPD/AHeDpikMMtBZ3Hk7Od3CqRVpeIDyBC0/oEwiascw6Q4
5SDclgEdL9jHU7Uo1Z9v+Ltn0lihGAkAsAMgJMFyfCFiB03yCXFQu34PK65ZoIk7
GN3XeUqu7sdmK7Tg4RbsrZ1P7J9TiFllMiu7noYVluhW4My68A76yHIbk66i8DwF
pzxPfTqH
=8zOA
-----END PGP SIGNATURE-----

BIN
strongswan-6.0.1.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,14 @@
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEElI8Vik52onvz0HUy30LBcLNNuncFAmfPLskACgkQ30LBcLNN
undnTgv/QKNJydFuLb5lmgU0TcbMJ+KXdUVA+b0phh+846mR4Ys4TGLqk1zmoA0e
/l216xZeCDGzbGoZtZKJYzY+rwkB25hgjTXHOWcz6wPN4CzEA3szWLi6j+ZGQ40C
JUUEy4m42iGJRQoSmWdLMrIxzWnPO4SViwZkMSiyRuUGMObRq4+utOIeK9Y8mw9x
mrrzknvXKO7FUjErgY1a/CiZi2STGq9Ilz17LQ4uaIypTUj7Mfc2UJcAR3PdVaa9
E6DW8wXYiDG9+RA9lGiEsSamciFaQDsA/MwT3Ys3zpr1o/24O39/CxscnUKFHgCN
backowMyOykAhSXZf+tuGfPMWkYK5B3TO7vuJPpu9FXCkKJgKGCcoPb1IFDAxnkT
F/hYsOrCNQrbJGKqNXiP+9RWa993p7B0y72bqbBSes2ciGpolIF1ZxDbHRHOejr/
R9R/VE8UCiqFFuFmQJv4p9El+Ap6opuCLukmSb/XFsz3x59+elIwkN+k55Z0WTf8
EPSTgay4
=b+qt
-----END PGP SIGNATURE-----

View File

@@ -0,0 +1,416 @@
From d5d2568ff0e88d364dadf50b67bf17050763cf98 Mon Sep 17 00:00:00 2001
From: Tobias Brunner <tobias@strongswan.org>
Date: Fri, 21 Feb 2025 16:45:57 +0100
Subject: [PATCH] callback-job: Replace return_false() in constructors with
dedicated function
Besides being clearer, this fixes issues with GCC 15. The latter uses
C23 by default, which changes the meaning of function declarations
without parameters such as
bool return false();
Instead of "this function takes an unknown number of arguments", this
now equals (void), that is, "this function takes no arguments". So we
run into incompatible pointer type warnings all over when using such
functions. They could be cast to (void*) but this seems the cleaner
solution for this use case.
---
src/charon-cmd/cmd/cmd_connection.c | 2 +-
.../jni/libandroidbridge/backend/android_dns_proxy.c | 2 +-
.../jni/libandroidbridge/backend/android_service.c | 6 +++---
src/libcharon/network/receiver.c | 2 +-
src/libcharon/network/sender.c | 2 +-
.../plugins/bypass_lan/bypass_lan_listener.c | 4 ++--
.../plugins/eap_radius/eap_radius_accounting.c | 2 +-
src/libcharon/plugins/eap_radius/eap_radius_plugin.c | 2 +-
src/libcharon/plugins/ha/ha_ctl.c | 2 +-
src/libcharon/plugins/ha/ha_dispatcher.c | 2 +-
src/libcharon/plugins/ha/ha_segments.c | 6 +++---
.../kernel_libipsec/kernel_libipsec_esp_handler.c | 2 +-
.../plugins/kernel_libipsec/kernel_libipsec_router.c | 2 +-
src/libcharon/plugins/smp/smp.c | 4 ++--
src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c | 2 +-
src/libcharon/plugins/uci/uci_control.c | 2 +-
src/libipsec/ipsec_event_relay.c | 2 +-
src/libipsec/ipsec_processor.c | 4 ++--
src/libpttls/pt_tls_dispatcher.c | 2 +-
src/libstrongswan/networking/streams/stream_service.c | 2 +-
src/libstrongswan/processing/jobs/callback_job.c | 10 +++++++++-
src/libstrongswan/processing/jobs/callback_job.h | 11 ++++++++++-
src/libstrongswan/processing/scheduler.c | 3 ++-
src/libstrongswan/processing/watcher.c | 4 ++--
src/libtls/tests/suites/test_socket.c | 2 +-
25 files changed, 51 insertions(+), 33 deletions(-)
diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c
index 8e8d8236e52..e220e33a62a 100644
--- a/src/charon-cmd/cmd/cmd_connection.c
+++ b/src/charon-cmd/cmd/cmd_connection.c
@@ -585,7 +585,7 @@ cmd_connection_t *cmd_connection_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio(
(callback_job_cb_t)initiate, this, NULL,
- (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public;
}
diff --git a/src/libcharon/network/receiver.c b/src/libcharon/network/receiver.c
index e79d5974409..480d1d622d5 100644
--- a/src/libcharon/network/receiver.c
+++ b/src/libcharon/network/receiver.c
@@ -737,7 +737,7 @@ receiver_t *receiver_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)receive_packets,
- this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public;
}
diff --git a/src/libcharon/network/sender.c b/src/libcharon/network/sender.c
index 4543766d62e..3fcd17f1b63 100644
--- a/src/libcharon/network/sender.c
+++ b/src/libcharon/network/sender.c
@@ -216,7 +216,7 @@ sender_t * sender_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)send_packets,
- this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public;
}
diff --git a/src/libcharon/plugins/bypass_lan/bypass_lan_listener.c b/src/libcharon/plugins/bypass_lan/bypass_lan_listener.c
index db7abd8146b..c9aed3666fc 100644
--- a/src/libcharon/plugins/bypass_lan/bypass_lan_listener.c
+++ b/src/libcharon/plugins/bypass_lan/bypass_lan_listener.c
@@ -227,7 +227,7 @@ METHOD(kernel_listener_t, roam, bool,
{
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)update_bypass, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
return TRUE;
}
@@ -269,7 +269,7 @@ METHOD(bypass_lan_listener_t, reload_interfaces, void,
this->mutex->unlock(this->mutex);
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)update_bypass, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
}
METHOD(bypass_lan_listener_t, destroy, void,
diff --git a/src/libcharon/plugins/eap_radius/eap_radius_accounting.c b/src/libcharon/plugins/eap_radius/eap_radius_accounting.c
index f833dc3c0b4..2f29d080764 100644
--- a/src/libcharon/plugins/eap_radius/eap_radius_accounting.c
+++ b/src/libcharon/plugins/eap_radius/eap_radius_accounting.c
@@ -706,7 +706,7 @@ static void schedule_interim(private_eap_radius_accounting_t *this,
(job_t*)callback_job_create_with_prio(
(callback_job_cb_t)send_interim,
data, (void*)destroy_interim_data,
- (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL), tv);
+ callback_job_cancel_thread, JOB_PRIO_CRITICAL), tv);
}
}
diff --git a/src/libcharon/plugins/eap_radius/eap_radius_plugin.c b/src/libcharon/plugins/eap_radius/eap_radius_plugin.c
index 5051542615a..55d5e032cea 100644
--- a/src/libcharon/plugins/eap_radius/eap_radius_plugin.c
+++ b/src/libcharon/plugins/eap_radius/eap_radius_plugin.c
@@ -445,7 +445,7 @@ void eap_radius_handle_timeout(ike_sa_id_t *id)
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio(
(callback_job_cb_t)delete_all_async, NULL, NULL,
- (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ callback_job_cancel_thread, JOB_PRIO_CRITICAL));
}
else if (id)
{
diff --git a/src/libcharon/plugins/ha/ha_ctl.c b/src/libcharon/plugins/ha/ha_ctl.c
index 8859bae166b..3d2ac7de84d 100644
--- a/src/libcharon/plugins/ha/ha_ctl.c
+++ b/src/libcharon/plugins/ha/ha_ctl.c
@@ -199,6 +199,6 @@ ha_ctl_t *ha_ctl_create(ha_segments_t *segments, ha_cache_t *cache)
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch_fifo,
- this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public;
}
diff --git a/src/libcharon/plugins/ha/ha_dispatcher.c b/src/libcharon/plugins/ha/ha_dispatcher.c
index 5de26a65a27..83be91ab159 100644
--- a/src/libcharon/plugins/ha/ha_dispatcher.c
+++ b/src/libcharon/plugins/ha/ha_dispatcher.c
@@ -1184,7 +1184,7 @@ ha_dispatcher_t *ha_dispatcher_create(ha_socket_t *socket,
);
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch, this,
- NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public;
}
diff --git a/src/libcharon/plugins/ha/ha_segments.c b/src/libcharon/plugins/ha/ha_segments.c
index afb76b39ea2..32d9ee40717 100644
--- a/src/libcharon/plugins/ha/ha_segments.c
+++ b/src/libcharon/plugins/ha/ha_segments.c
@@ -316,7 +316,7 @@ static void start_watchdog(private_ha_segments_t *this)
this->heartbeat_active = TRUE;
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)watchdog, this,
- NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
}
METHOD(ha_segments_t, handle_status, void,
@@ -404,7 +404,7 @@ static void start_heartbeat(private_ha_segments_t *this)
{
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)send_status,
- this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
}
/**
@@ -451,7 +451,7 @@ static void start_autobalance(private_ha_segments_t *this)
DBG1(DBG_CFG, "scheduling HA autobalance every %ds", this->autobalance);
lib->scheduler->schedule_job(lib->scheduler,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)autobalance,
- this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL),
+ this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL),
this->autobalance);
}
diff --git a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_esp_handler.c b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_esp_handler.c
index 095ad67b4b0..c18e266e4d1 100644
--- a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_esp_handler.c
+++ b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_esp_handler.c
@@ -337,7 +337,7 @@ kernel_libipsec_esp_handler_t *kernel_libipsec_esp_handler_create()
}
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create(send_esp, this, NULL,
- (callback_job_cancel_t)return_false));
+ callback_job_cancel_thread));
return &this->public;
}
diff --git a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.c b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.c
index 74746e251de..07adc70be3e 100644
--- a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.c
+++ b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.c
@@ -364,7 +364,7 @@ kernel_libipsec_router_t *kernel_libipsec_router_create()
charon->receiver->add_esp_cb(charon->receiver, receiver_esp_cb, NULL);
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)handle_plain, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
router = &this->public;
return &this->public;
diff --git a/src/libcharon/plugins/smp/smp.c b/src/libcharon/plugins/smp/smp.c
index 6ca9f13997e..85ff5830bc5 100644
--- a/src/libcharon/plugins/smp/smp.c
+++ b/src/libcharon/plugins/smp/smp.c
@@ -710,7 +710,7 @@ static job_requeue_t dispatch(private_smp_t *this)
fdp = malloc_thing(int);
*fdp = fd;
job = callback_job_create((callback_job_cb_t)process, fdp, free,
- (callback_job_cancel_t)return_false);
+ callback_job_cancel_thread);
lib->processor->queue_job(lib->processor, (job_t*)job);
return JOB_REQUEUE_DIRECT;
@@ -800,7 +800,7 @@ plugin_t *smp_plugin_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch, this,
- NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
return &this->public.plugin;
}
diff --git a/src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c b/src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c
index 30aeb116dec..da317a894d9 100644
--- a/src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c
+++ b/src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c
@@ -210,7 +210,7 @@ METHOD(tnc_pdp_connections_t, add, void,
/* schedule timeout checking */
lib->scheduler->schedule_job_ms(lib->scheduler,
(job_t*)callback_job_create((callback_job_cb_t)check_timeouts,
- this, NULL, (callback_job_cancel_t)return_false),
+ this, NULL, callback_job_cancel_thread),
this->timeout * 1000);
dbg_nas_user(nas_id, user_name, FALSE, "created");
diff --git a/src/libcharon/plugins/uci/uci_control.c b/src/libcharon/plugins/uci/uci_control.c
index b033c832c8c..8074005ee57 100644
--- a/src/libcharon/plugins/uci/uci_control.c
+++ b/src/libcharon/plugins/uci/uci_control.c
@@ -296,7 +296,7 @@ uci_control_t *uci_control_create()
{
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)receive,
- this, NULL, (callback_job_cancel_t)return_false,
+ this, NULL, callback_job_cancel_thread,
JOB_PRIO_CRITICAL));
}
return &this->public;
diff --git a/src/libipsec/ipsec_event_relay.c b/src/libipsec/ipsec_event_relay.c
index 0f10795d168..802146eef21 100644
--- a/src/libipsec/ipsec_event_relay.c
+++ b/src/libipsec/ipsec_event_relay.c
@@ -230,7 +230,7 @@ ipsec_event_relay_t *ipsec_event_relay_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)handle_events, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
return &this->public;
}
diff --git a/src/libipsec/ipsec_processor.c b/src/libipsec/ipsec_processor.c
index 2572b088089..8549fefe261 100644
--- a/src/libipsec/ipsec_processor.c
+++ b/src/libipsec/ipsec_processor.c
@@ -336,9 +336,9 @@ ipsec_processor_t *ipsec_processor_create()
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)process_inbound, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)process_outbound, this,
- NULL, (callback_job_cancel_t)return_false));
+ NULL, callback_job_cancel_thread));
return &this->public;
}
diff --git a/src/libpttls/pt_tls_dispatcher.c b/src/libpttls/pt_tls_dispatcher.c
index a134bee238f..c7e42b277e1 100644
--- a/src/libpttls/pt_tls_dispatcher.c
+++ b/src/libpttls/pt_tls_dispatcher.c
@@ -156,7 +156,7 @@ METHOD(pt_tls_dispatcher_t, dispatch, void,
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((callback_job_cb_t)handle,
connection, (void*)cleanup,
- (callback_job_cancel_t)return_false,
+ callback_job_cancel_thread,
JOB_PRIO_CRITICAL));
}
}
diff --git a/src/libstrongswan/networking/streams/stream_service.c b/src/libstrongswan/networking/streams/stream_service.c
index 5b709a2247d..c85a0664351 100644
--- a/src/libstrongswan/networking/streams/stream_service.c
+++ b/src/libstrongswan/networking/streams/stream_service.c
@@ -221,7 +221,7 @@ static bool watch(private_stream_service_t *this, int fd, watcher_event_t event)
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((void*)accept_async, data,
- (void*)destroy_async_data, (callback_job_cancel_t)return_false,
+ (void*)destroy_async_data, callback_job_cancel_thread,
this->prio));
}
else
diff --git a/src/libstrongswan/processing/jobs/callback_job.c b/src/libstrongswan/processing/jobs/callback_job.c
index cb2a0aba5b9..3ab40b947c9 100644
--- a/src/libstrongswan/processing/jobs/callback_job.c
+++ b/src/libstrongswan/processing/jobs/callback_job.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2012 Tobias Brunner
+ * Copyright (C) 2009-2025 Tobias Brunner
* Copyright (C) 2007-2011 Martin Willi
*
* Copyright (C) secunet Security Networks AG
@@ -131,3 +131,11 @@ callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
return callback_job_create_with_prio(cb, data, cleanup, cancel,
JOB_PRIO_MEDIUM);
}
+
+/*
+ * Described in header
+ */
+bool callback_job_cancel_thread(void *data)
+{
+ return FALSE;
+}
diff --git a/src/libstrongswan/processing/jobs/callback_job.h b/src/libstrongswan/processing/jobs/callback_job.h
index 0f1ae212d87..fda86887944 100644
--- a/src/libstrongswan/processing/jobs/callback_job.h
+++ b/src/libstrongswan/processing/jobs/callback_job.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Tobias Brunner
+ * Copyright (C) 2012-2025 Tobias Brunner
* Copyright (C) 2007-2011 Martin Willi
*
* Copyright (C) secunet Security Networks AG
@@ -62,6 +62,15 @@ typedef void (*callback_job_cleanup_t)(void *data);
*/
typedef bool (*callback_job_cancel_t)(void *data);
+/**
+ * Default implementation of callback_job_cancel_t that simply returns FALSE
+ * to force cancellation of the thread by the processor.
+ *
+ * @param data ignored argument
+ * @return always returns FALSE
+ */
+bool callback_job_cancel_thread(void *data);
+
/**
* Class representing an callback Job.
*
diff --git a/src/libstrongswan/processing/scheduler.c b/src/libstrongswan/processing/scheduler.c
index c5e5dd83e70..76d98ddff51 100644
--- a/src/libstrongswan/processing/scheduler.c
+++ b/src/libstrongswan/processing/scheduler.c
@@ -329,7 +329,8 @@ scheduler_t * scheduler_create()
this->heap = (event_t**)calloc(this->heap_size + 1, sizeof(event_t*));
job = callback_job_create_with_prio((callback_job_cb_t)schedule, this,
- NULL, return_false, JOB_PRIO_CRITICAL);
+ NULL, callback_job_cancel_thread,
+ JOB_PRIO_CRITICAL);
lib->processor->queue_job(lib->processor, (job_t*)job);
return &this->public;
diff --git a/src/libstrongswan/processing/watcher.c b/src/libstrongswan/processing/watcher.c
index 1200d670959..a86ec0910d1 100644
--- a/src/libstrongswan/processing/watcher.c
+++ b/src/libstrongswan/processing/watcher.c
@@ -291,7 +291,7 @@ static void notify(private_watcher_t *this, entry_t *entry,
this->jobs->insert_last(this->jobs,
callback_job_create_with_prio((void*)notify_async, data,
- (void*)notify_end, (callback_job_cancel_t)return_false,
+ (void*)notify_end, callback_job_cancel_thread,
JOB_PRIO_CRITICAL));
}
@@ -559,7 +559,7 @@ METHOD(watcher_t, add, void,
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create_with_prio((void*)watch, this,
- NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
+ NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
}
else
{
diff --git a/src/libtls/tests/suites/test_socket.c b/src/libtls/tests/suites/test_socket.c
index 91ee58b975f..c17d0a8873e 100644
--- a/src/libtls/tests/suites/test_socket.c
+++ b/src/libtls/tests/suites/test_socket.c
@@ -587,7 +587,7 @@ static void start_echo_server(echo_server_config_t *config)
lib->processor->queue_job(lib->processor, (job_t*)
callback_job_create((void*)serve_echo, config, NULL,
- (callback_job_cancel_t)return_false));
+ callback_job_cancel_thread));
}
/**

View File

@@ -0,0 +1,115 @@
From 11978ddd39e800b5f35f721d726e8a4cb7e4ec0f Mon Sep 17 00:00:00 2001
From: Tobias Brunner <tobias@strongswan.org>
Date: Fri, 21 Feb 2025 17:00:44 +0100
Subject: [PATCH] Cast uses of return_*(), nop() and enumerator_create_empty()
As described in the previous commit, GCC 15 uses C23 by default and that
changes the meaning of such argument-less function declarations. So
whenever we assign such a function to a pointer that expects a function
with arguments it causes an incompatible pointer type warning. We
could define dedicated functions/callbacks whenever necessary, but this
seems like the simpler approach for now (especially since most uses of
these functions have already been cast).
---
src/charon-nm/nm/nm_handler.c | 2 +-
src/libcharon/encoding/payloads/encrypted_payload.c | 2 +-
src/libcharon/plugins/android_dns/android_dns_handler.c | 2 +-
src/libcharon/plugins/ha/ha_attribute.c | 2 +-
src/libcharon/plugins/updown/updown_handler.c | 2 +-
src/libstrongswan/utils/identification.c | 6 +++---
6 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/charon-nm/nm/nm_handler.c b/src/charon-nm/nm/nm_handler.c
index d7331ad72f6..39d0190ac9e 100644
--- a/src/charon-nm/nm/nm_handler.c
+++ b/src/charon-nm/nm/nm_handler.c
@@ -195,7 +195,7 @@ nm_handler_t *nm_handler_create()
.public = {
.handler = {
.handle = _handle,
- .release = nop,
+ .release = (void*)nop,
.create_attribute_enumerator = _create_attribute_enumerator,
},
.create_enumerator = _create_enumerator,
diff --git a/src/libcharon/encoding/payloads/encrypted_payload.c b/src/libcharon/encoding/payloads/encrypted_payload.c
index 676d00b7a29..4821c6108ed 100644
--- a/src/libcharon/encoding/payloads/encrypted_payload.c
+++ b/src/libcharon/encoding/payloads/encrypted_payload.c
@@ -1023,7 +1023,7 @@ encrypted_fragment_payload_t *encrypted_fragment_payload_create()
.get_length = _frag_get_length,
.add_payload = _frag_add_payload,
.remove_payload = (void*)return_null,
- .generate_payloads = nop,
+ .generate_payloads = (void*)nop,
.set_transform = _frag_set_transform,
.get_transform = _frag_get_transform,
.encrypt = _frag_encrypt,
diff --git a/src/libcharon/plugins/android_dns/android_dns_handler.c b/src/libcharon/plugins/android_dns/android_dns_handler.c
index 78f4f702aec..14d2ff99aa3 100644
--- a/src/libcharon/plugins/android_dns/android_dns_handler.c
+++ b/src/libcharon/plugins/android_dns/android_dns_handler.c
@@ -191,7 +191,7 @@ METHOD(enumerator_t, enumerate_dns, bool,
VA_ARGS_VGET(args, type, data);
*type = INTERNAL_IP4_DNS;
*data = chunk_empty;
- this->venumerate = return_false;
+ this->venumerate = (void*)return_false;
return TRUE;
}
diff --git a/src/libcharon/plugins/ha/ha_attribute.c b/src/libcharon/plugins/ha/ha_attribute.c
index b865a4b829b..103d1a93784 100644
--- a/src/libcharon/plugins/ha/ha_attribute.c
+++ b/src/libcharon/plugins/ha/ha_attribute.c
@@ -381,7 +381,7 @@ ha_attribute_t *ha_attribute_create(ha_kernel_t *kernel, ha_segments_t *segments
.provider = {
.acquire_address = _acquire_address,
.release_address = _release_address,
- .create_attribute_enumerator = enumerator_create_empty,
+ .create_attribute_enumerator = (void*)enumerator_create_empty,
},
.reserve = _reserve,
.destroy = _destroy,
diff --git a/src/libcharon/plugins/updown/updown_handler.c b/src/libcharon/plugins/updown/updown_handler.c
index 36eb15615a4..3707e1e658c 100644
--- a/src/libcharon/plugins/updown/updown_handler.c
+++ b/src/libcharon/plugins/updown/updown_handler.c
@@ -220,7 +220,7 @@ updown_handler_t *updown_handler_create()
.handler = {
.handle = _handle,
.release = _release,
- .create_attribute_enumerator = enumerator_create_empty,
+ .create_attribute_enumerator = (void*)enumerator_create_empty,
},
.create_dns_enumerator = _create_dns_enumerator,
.destroy = _destroy,
diff --git a/src/libstrongswan/utils/identification.c b/src/libstrongswan/utils/identification.c
index d31955b3806..58a05052dc1 100644
--- a/src/libstrongswan/utils/identification.c
+++ b/src/libstrongswan/utils/identification.c
@@ -1625,7 +1625,7 @@ static private_identification_t *identification_create(id_type_t type)
this->public.hash = _hash_binary;
this->public.equals = _equals_binary;
this->public.matches = _matches_any;
- this->public.contains_wildcards = return_true;
+ this->public.contains_wildcards = (void*)return_true;
break;
case ID_FQDN:
case ID_RFC822_ADDR:
@@ -1660,13 +1660,13 @@ static private_identification_t *identification_create(id_type_t type)
this->public.hash = _hash_binary;
this->public.equals = _equals_binary;
this->public.matches = _matches_range;
- this->public.contains_wildcards = return_false;
+ this->public.contains_wildcards = (void*)return_false;
break;
default:
this->public.hash = _hash_binary;
this->public.equals = _equals_binary;
this->public.matches = _matches_binary;
- this->public.contains_wildcards = return_false;
+ this->public.contains_wildcards = (void*)return_false;
break;
}
return this;

View File

@@ -0,0 +1,23 @@
From a7b5de569082398a14b7e571498e55d005903aaf Mon Sep 17 00:00:00 2001
From: Tobias Brunner <tobias@strongswan.org>
Date: Fri, 21 Feb 2025 17:18:35 +0100
Subject: [PATCH] pki: Fix signature of help() to match that of a callback in
command_t
---
src/pki/command.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pki/command.c b/src/pki/command.c
index accec5fe51b..6e6bf041e18 100644
--- a/src/pki/command.c
+++ b/src/pki/command.c
@@ -265,7 +265,7 @@ int command_usage(char *error)
/**
* Show usage information
*/
-static int help(int c, char *v[])
+static int help()
{
return command_usage(NULL);
}

View File

@@ -1,3 +1,47 @@
-------------------------------------------------------------------
Thu Jun 5 07:41:56 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Add pkgconfig(libxml-2.0) BuildRequire which was previously
implicitly pulled in through SOUP. Move everything else to
pkgconfig() symbols as well.
-------------------------------------------------------------------
Tue Jun 3 17:45:03 UTC 2025 - Michael Gorse <mgorse@suse.com>
- Disable soup fetcher. It is redundant with the curl fetcher, and
this allows us to drop the dependency on libsoup2.
-------------------------------------------------------------------
Tue May 6 14:01:21 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
- Add patches from upstream github.com/strongswan/strongswan
to fix gcc-15 compile-time errors:
* strongswan-gcc15-part1.patch
* strongswan-gcc15-part2.patch
* strongswan-gcc15-part3.patch
-------------------------------------------------------------------
Tue Mar 11 18:54:30 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 6.0.1
* The `dhcp` plugin has gained a new `interface_receive` option
* The `eap-radius` plugin hsa gained a new `source` option
* The NetworkManager plugin (charon-nm) received an option to
configure the local traffic selectors.
* The `ha` plugin now supports synchronizing IKE and Child SAs
with multiple key exchanges
* Self-signed root CAs that do not contain policies are now
excluded from policy validation.
* When deciding whether to send a DPD, inbound traffic on Child
SAs is now ignored unless UDP-encapsulation is used.
* When connecting to port 4500 or a custom server port, the
initial IKE_SA_INIT request is now sent from the NAT-T
socket.
* The NetworkManager backend (charon-nm) now enables
charon-nm.check_current_path to force a DPD after
connectivity changes without IP change.
- Ensure build recipe is POSIX sh compatible
-------------------------------------------------------------------
Tue Dec 3 15:59:06 UTC 2024 - Jan Engelhardt <jengelh@inai.de>

View File

@@ -1,7 +1,7 @@
#
# spec file for package strongswan
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -39,7 +39,7 @@
%bcond_without systemd
Name: strongswan
Version: 6.0.0
Version: 6.0.1
Release: 0
Summary: IPsec-based VPN solution
License: GPL-2.0-or-later
@@ -56,23 +56,26 @@ Patch2: %{name}_ipsec_service.patch
Patch5: 0005-ikev1-Don-t-retransmit-Aggressive-Mode-response.patch
Patch6: harden_strongswan.service.patch
Patch7: init.patch
Patch11: strongswan-gcc15-part1.patch
Patch12: strongswan-gcc15-part2.patch
Patch13: strongswan-gcc15-part3.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: curl-devel
BuildRequires: flex
BuildRequires: gmp-devel
BuildRequires: gperf
BuildRequires: iptables
BuildRequires: libcap-devel
BuildRequires: libopenssl-devel
BuildRequires: libtool
BuildRequires: openldap2-devel
BuildRequires: pam-devel
BuildRequires: pcsc-lite-devel
BuildRequires: pkg-config
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(ldap)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libpcsclite)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(pam)
%if %{with mysql}
BuildRequires: libmysqlclient-devel
%endif
@@ -303,7 +306,6 @@ autoreconf --force --install
--enable-test-vectors \
%endif
--enable-ldap \
--enable-soup \
--enable-curl \
--enable-bypass-lan \
--disable-static
@@ -333,7 +335,7 @@ LD_LIBRARY_PATH="%{buildroot}-$$/%{strongswan_libdir}" \
%{_rpmconfigdir}/find-debuginfo.sh \
%{?_find_debuginfo_opts} "%{buildroot}-$$"
make -C src/checksum clean
rm -f src/checksum/checksum_builder
rm -f src/checksum/checksum_builder
LD_LIBRARY_PATH="%{buildroot}-$$/%{strongswan_libdir}" \
make -C src/checksum install DESTDIR="%{buildroot}-$$"
mv "%{buildroot}-$$/%{strongswan_libdir}/libchecksum.so" \
@@ -360,8 +362,9 @@ rm -f %{buildroot}/%{strongswan_templates}/database/sql/mysql.sql
%if ! %{with sqlite}
rm -f %{buildroot}/%{strongswan_templates}/database/sql/sqlite.sql
%endif
rm -f %{buildroot}/%{strongswan_libdir}/lib{charon,hydra,strongswan,pttls}.so
rm -f %{buildroot}/%{strongswan_libdir}/lib{radius,simaka,tls,tnccs,imcv}.so
for i in charon hydra strongswan pttls radius simaka tls tnccs imcv; do
rm -fv %{buildroot}/%{strongswan_libdir}/lib$i.so
done
find %{buildroot}/%{strongswan_libdir} -type f -name "*.la" -delete
install -d -m755 %{buildroot}/%{strongswan_docdir}/
install -c -m644 TODO NEWS README COPYING LICENSE \
@@ -468,9 +471,11 @@ fi
%dir %{strongswan_configs}
%dir %{strongswan_configs}/charon
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon-nm.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon-systemd.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon-logging.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/imcv.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/imv_policy_manager.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/pki.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/pool.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/tnc.conf
@@ -545,7 +550,6 @@ fi
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/revocation.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/smp.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/socket-default.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/soup.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/sql.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/sshkey.conf
%config(noreplace) %attr(600,root,root) %{strongswan_configs}/charon/tnccs-11.conf
@@ -653,7 +657,6 @@ fi
%{strongswan_plugins}/libstrongswan-revocation.so
%{strongswan_plugins}/libstrongswan-smp.so
%{strongswan_plugins}/libstrongswan-socket-default.so
%{strongswan_plugins}/libstrongswan-soup.so
%{strongswan_plugins}/libstrongswan-sql.so
%{strongswan_plugins}/libstrongswan-sshkey.so
%{strongswan_plugins}/libstrongswan-tnc-imc.so
@@ -749,7 +752,6 @@ fi
%{strongswan_templates}/config/plugins/revocation.conf
%{strongswan_templates}/config/plugins/smp.conf
%{strongswan_templates}/config/plugins/socket-default.conf
%{strongswan_templates}/config/plugins/soup.conf
%{strongswan_templates}/config/plugins/sql.conf
%{strongswan_templates}/config/plugins/sshkey.conf
%{strongswan_templates}/config/plugins/tnc-imc.conf
@@ -771,7 +773,9 @@ fi
%{strongswan_templates}/config/strongswan.d/charon-systemd.conf
%{strongswan_templates}/config/strongswan.d/charon-logging.conf
%{strongswan_templates}/config/strongswan.d/charon.conf
%{strongswan_templates}/config/strongswan.d/charon-nm.conf
%{strongswan_templates}/config/strongswan.d/imcv.conf
%{strongswan_templates}/config/strongswan.d/imv_policy_manager.conf
%{strongswan_templates}/config/strongswan.d/pki.conf
%{strongswan_templates}/config/strongswan.d/pool.conf
%{strongswan_templates}/config/strongswan.d/tnc.conf