aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Steinmetz <zi@FreeBSD.org>2021-07-16 14:17:16 +0000
committerRyan Steinmetz <zi@FreeBSD.org>2021-07-16 14:17:53 +0000
commit58e26f659ee7fca73abd3b0c39691120d991f409 (patch)
treeb1825767b6269d4ccfb22f53b36a5306f90c1c4b
parent3ec80876f4ef5065f75d97a7ce659ee70e5317b6 (diff)
downloadports-58e26f659ee.tar.gz
ports-58e26f659ee.zip
net/freeradius3: Fix crash, bump PORTREVISION
-rw-r--r--net/freeradius3/Makefile1
-rw-r--r--net/freeradius3/files/patch-src__main__state.c86
-rw-r--r--net/freeradius3/pkg-plist2
3 files changed, 89 insertions, 0 deletions
diff --git a/net/freeradius3/Makefile b/net/freeradius3/Makefile
index 27ab27245b06..27dd69f6ea16 100644
--- a/net/freeradius3/Makefile
+++ b/net/freeradius3/Makefile
@@ -2,6 +2,7 @@
PORTNAME= freeradius
DISTVERSION= 3.0.23
+PORTREVISION= 1
CATEGORIES= net
MASTER_SITES= ftp://ftp.freeradius.org/pub/freeradius/%SUBDIR%/ \
ftp://ftp.ntua.gr/pub/net/radius/freeradius/%SUBDIR%/ \
diff --git a/net/freeradius3/files/patch-src__main__state.c b/net/freeradius3/files/patch-src__main__state.c
new file mode 100644
index 000000000000..ea33f43de798
--- /dev/null
+++ b/net/freeradius3/files/patch-src__main__state.c
@@ -0,0 +1,86 @@
+--- src/main/state.c.orig
++++ src/main/state.c
+@@ -311,15 +311,30 @@ static state_entry_t *fr_state_cleanup_find(fr_state_t *state)
+ continue;
+ }
+
++ /*
++ * Not yet time to clean it up.
++ */
++ if (entry->cleanup > now) {
++ continue;
++ }
++
++ /*
++ * We're not running the "client lost" section.
++ * Just nuke the entry now.
++ */
++ if (!main_config.postauth_client_lost) {
++ state_entry_free(state, entry);
++ continue;
++ }
++
+ /*
+ * Old enough that the request has been removed.
+ * We can add it to the cleanup list.
+ */
+- if (entry->cleanup < now) {
+- (*tail) = entry;
+- state_entry_unlink(state, entry);
+- tail = &entry->next;
+- }
++ state_entry_unlink(state, entry);
++ entry->next = NULL;
++ (*tail) = entry;
++ tail = &entry->next;
+ }
+
+ return head;
+@@ -335,30 +349,28 @@ static void fr_state_cleanup(state_entry_t *head)
+ if (!head) return;
+
+ for (entry = head; entry != NULL; entry = next) {
+- next = entry->next;
++ REQUEST *request;
+
+- if (main_config.postauth_client_lost) {
+- REQUEST *request;
++ next = entry->next;
+
+- request = fr_state_cleanup_request(entry);
+- if (request) {
+- RDEBUG2("No response from client, cleaning up expired state");
+- RDEBUG2("Restoring &session-state");
++ request = fr_state_cleanup_request(entry);
++ if (request) {
++ RDEBUG2("No response from client, cleaning up expired state");
++ RDEBUG2("Restoring &session-state");
+
+- /*
+- * @todo - print out message
+- * saying where the handler was
+- * in the process? i.e. "sent
+- * server cert", etc. This will
+- * require updating the EAP code
+- * to put a new attribute into
+- * the session state list.
+- */
++ /*
++ * @todo - print out message
++ * saying where the handler was
++ * in the process? i.e. "sent
++ * server cert", etc. This will
++ * require updating the EAP code
++ * to put a new attribute into
++ * the session state list.
++ */
+
+- rdebug_pair_list(L_DBG_LVL_2, request, request->state, "&session-state:");
++ rdebug_pair_list(L_DBG_LVL_2, request, request->state, "&session-state:");
+
+- request_inject(request);
+- }
++ request_inject(request);
+ }
+
+ talloc_free(entry);
diff --git a/net/freeradius3/pkg-plist b/net/freeradius3/pkg-plist
index 2c361f42b761..1493f6d54d21 100644
--- a/net/freeradius3/pkg-plist
+++ b/net/freeradius3/pkg-plist
@@ -816,6 +816,7 @@ sbin/radmin
%%EXAMPLESDIR%%/raddb/mods-enabled/replicate
%%EXAMPLESDIR%%/raddb/mods-enabled/soh
%%EXAMPLESDIR%%/raddb/mods-enabled/sradutmp
+%%EXAMPLESDIR%%/raddb/mods-enabled/totp
%%EXAMPLESDIR%%/raddb/mods-enabled/unix
%%EXAMPLESDIR%%/raddb/mods-enabled/unpack
%%EXAMPLESDIR%%/raddb/mods-enabled/utf8
@@ -858,6 +859,7 @@ sbin/radmin
%%EXAMPLESDIR%%/raddb/sites-available/robust-proxy-accounting
%%EXAMPLESDIR%%/raddb/sites-available/soh
%%EXAMPLESDIR%%/raddb/sites-available/status
+%%EXAMPLESDIR%%/raddb/sites-available/totp
%%EXAMPLESDIR%%/raddb/sites-available/tls
%%EXAMPLESDIR%%/raddb/sites-available/virtual.example.com
%%EXAMPLESDIR%%/raddb/sites-available/vmps