diff options
| author | Haixiao Yan <haixiao.yan.cn@windriver.com> | 2024-11-18 15:07:49 +0800 |
|---|---|---|
| committer | Armin Kuster <akuster808@gmail.com> | 2024-12-08 14:54:19 -0500 |
| commit | feb37930707107748a31300acb5f30189b7232a3 (patch) | |
| tree | 181fef6bfd4b21fd6524d4a28fc38c08e3a180e7 | |
| parent | adf635944c6a2f63b5772ceaa5411be84a9b3711 (diff) | |
| download | meta-openembedded-feb37930707107748a31300acb5f30189b7232a3.tar.gz | |
freeradius: upgrade 3.0.21 -> 3.0.27
ChangeLog:
https://github.com/FreeRADIUS/freeradius-server/releases/tag/release_3_0_27
Configuration changes:
BlastRADIUS mitigations have been added to the "security" section. See
require_message_authenticator and also limit_proxy_state.
BlastRADIUS mitigations have been added to radclient. See man radclient,
and the -b option.
Security fixes:
CVE-2024-3596:
RADIUS Protocol under RFC 2865 is susceptible to forgery attacks by a
local attacker who can modify any valid Response (Access-Accept,
Access-Reject, or Access-Challenge) to any other response using a
chosen-prefix collision attack against MD5 Response Authenticator signature.
Reference:
https://nvd.nist.gov/vuln/detail/CVE-2024-3596
https://www.freeradius.org/security/
https://www.blastradius.fail/
https://www.inkbridgenetworks.com/web/content/2557?unique=47be02c8aed46c53b0765db185320249ad873d95
Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com>
[Drop CVE-2024-3596 patch backported early]
Signed-off-by: Armin Kuster <akuster808@gmail.com>
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0001-Add-autogen.sh.patch | 47 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0002-Enable-and-change-user-and-group-of-freeradius-serve.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-enble-user-in-conf.patch) | 12 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-allow-cross-compilation.patch) | 10 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0004-Fix-libtool-detection.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-detection.patch) | 33 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0005-configure.ac-add-option-for-libcap.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-add-option-for-libcap.patch) | 12 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-avoid-searching-host-dirs.patch) | 57 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-rlm_python-add-PY_INC_DIR.patch) | 12 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0008-libtool-do-not-use-jlibtool.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-do-not-use-jlibtool.patch) | 24 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0009-Fix-quoting-for-BUILD_WITH.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-quoting-for-BUILT_WITH.patch) | 13 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0010-fix-error-for-expansion-of-macro-in-thread.h.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-error-for-expansion-of-macro.patch) | 6 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/0001-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch) | 17 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-existed-certificate-err.patch) | 10 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0013-raddb-certs-Makefile-fix-the-occasional-verification.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-occasional-verification.patch) | 17 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0014-Workaround-error-with-autoconf-2.7.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/0001-workaround-error-with-autoconf-2.7.patch) | 14 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0015-bootstrap-check-commands-of-openssl-exist.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/check-openssl-cmds-in-script-bootstrap.patch) | 10 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/0016-version.c-don-t-print-build-flags.patch (renamed from meta-networking/recipes-connectivity/freeradius/files/0001-version.c-don-t-print-build-flags.patch) | 6 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41860.patch | 118 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41861.patch | 53 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/files/CVE-2024-3596.patch | 1506 | ||||
| -rw-r--r-- | meta-networking/recipes-connectivity/freeradius/freeradius_3.0.27.bb (renamed from meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb) | 38 |
20 files changed, 192 insertions, 1823 deletions
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-Add-autogen.sh.patch b/meta-networking/recipes-connectivity/freeradius/files/0001-Add-autogen.sh.patch new file mode 100644 index 0000000000..968998ddb6 --- /dev/null +++ b/meta-networking/recipes-connectivity/freeradius/files/0001-Add-autogen.sh.patch | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | From 3be3b9a1345942d1578ec73efa9b2e3c41bd67c5 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Yi Zhao <yi.zhao@windriver.com> | ||
| 3 | Date: Fri, 21 Jan 2022 13:22:24 +0800 | ||
| 4 | Subject: [PATCH] Add autogen.sh | ||
| 5 | |||
| 6 | The autogen.sh has been removed since 3.0.22[1]. But we still need it in | ||
| 7 | do_configure. Add it back. | ||
| 8 | |||
| 9 | [1] https://github.com/FreeRADIUS/freeradius-server/commit/2e9b6227efd19e2b0926541aa26874908e7b7314 | ||
| 10 | |||
| 11 | Upstream-Status: Inappropriate [embedded specific] | ||
| 12 | |||
| 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | ||
| 14 | Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
| 15 | --- | ||
| 16 | autogen.sh | 19 +++++++++++++++++++ | ||
| 17 | 1 file changed, 19 insertions(+) | ||
| 18 | create mode 100755 autogen.sh | ||
| 19 | |||
| 20 | diff --git a/autogen.sh b/autogen.sh | ||
| 21 | new file mode 100755 | ||
| 22 | index 0000000000..959182b39e | ||
| 23 | --- /dev/null | ||
| 24 | +++ b/autogen.sh | ||
| 25 | @@ -0,0 +1,19 @@ | ||
| 26 | +#!/bin/sh -e | ||
| 27 | + | ||
| 28 | +parentdir=`dirname $0` | ||
| 29 | + | ||
| 30 | +cd $parentdir | ||
| 31 | +parentdir=`pwd` | ||
| 32 | +m4include="-I$parentdir -I$parentdir/m4 -Im4" | ||
| 33 | + | ||
| 34 | +autoreconf -Wcross --verbose --install --force | ||
| 35 | + | ||
| 36 | +mysubdirs="$mysubdirs `find src/modules/ -name configure -print | sed 's%/configure%%'`" | ||
| 37 | +mysubdirs=`echo $mysubdirs` | ||
| 38 | + | ||
| 39 | +for F in $mysubdirs | ||
| 40 | +do | ||
| 41 | + echo "Configuring in $F..." | ||
| 42 | + (cd $F && grep "^AC_CONFIG_HEADER" configure.ac > /dev/null || exit 0; autoheader $m4include) | ||
| 43 | + (cd $F && autoconf $m4include) | ||
| 44 | +done | ||
| 45 | -- | ||
| 46 | 2.25.1 | ||
| 47 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-enble-user-in-conf.patch b/meta-networking/recipes-connectivity/freeradius/files/0002-Enable-and-change-user-and-group-of-freeradius-serve.patch index 4a62bf1fa2..c57ee93c33 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-enble-user-in-conf.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0002-Enable-and-change-user-and-group-of-freeradius-serve.patch | |||
| @@ -1,4 +1,8 @@ | |||
| 1 | Enable and change user and group of freeradius server to radiusd | 1 | From 2a74c10836c0d2d19248ca40d113936f4a56b039 Mon Sep 17 00:00:00 2001 |
| 2 | From: "Roy.Li" <rongqing.li@windriver.com> | ||
| 3 | Date: Sun, 8 Jan 2023 22:47:11 +0800 | ||
| 4 | Subject: [PATCH] Enable and change user and group of freeradius server to | ||
| 5 | radiusd | ||
| 2 | 6 | ||
| 3 | Upstream-Status: Inappropriate [configuration] | 7 | Upstream-Status: Inappropriate [configuration] |
| 4 | 8 | ||
| @@ -9,10 +13,10 @@ Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | |||
| 9 | 1 file changed, 2 insertions(+), 2 deletions(-) | 13 | 1 file changed, 2 insertions(+), 2 deletions(-) |
| 10 | 14 | ||
| 11 | diff --git a/raddb/radiusd.conf.in b/raddb/radiusd.conf.in | 15 | diff --git a/raddb/radiusd.conf.in b/raddb/radiusd.conf.in |
| 12 | index c62f4ff..0b4a84e 100644 | 16 | index 154b50d610..4594d6d2d2 100644 |
| 13 | --- a/raddb/radiusd.conf.in | 17 | --- a/raddb/radiusd.conf.in |
| 14 | +++ b/raddb/radiusd.conf.in | 18 | +++ b/raddb/radiusd.conf.in |
| 15 | @@ -436,8 +436,8 @@ security { | 19 | @@ -557,8 +557,8 @@ security { |
| 16 | # member. This can allow for some finer-grained access | 20 | # member. This can allow for some finer-grained access |
| 17 | # controls. | 21 | # controls. |
| 18 | # | 22 | # |
| @@ -24,5 +28,5 @@ index c62f4ff..0b4a84e 100644 | |||
| 24 | # Core dumps are a bad thing. This should only be set to | 28 | # Core dumps are a bad thing. This should only be set to |
| 25 | # 'yes' if you're debugging a problem with the server. | 29 | # 'yes' if you're debugging a problem with the server. |
| 26 | -- | 30 | -- |
| 27 | 1.9.1 | 31 | 2.25.1 |
| 28 | 32 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-allow-cross-compilation.patch b/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch index 38e7c36227..e5442360b3 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-allow-cross-compilation.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 0780b7053fb0d33d721aa70ab2ecd75299e5ba31 Mon Sep 17 00:00:00 2001 | 1 | From ba1390a80662ff2ab7bfda978cde7df9a871f6ae Mon Sep 17 00:00:00 2001 |
| 2 | From: Changqing Li <changqing.li@windriver.com> | 2 | From: Changqing Li <changqing.li@windriver.com> |
| 3 | Date: Tue, 24 Jul 2018 15:03:39 +0800 | 3 | Date: Tue, 24 Jul 2018 15:03:39 +0800 |
| 4 | Subject: [PATCH] configure.ac: allow cross-compilation | 4 | Subject: [PATCH] configure.ac: allow cross-compilation |
| @@ -7,7 +7,7 @@ The checking OpenSSL library and header version consistency will | |||
| 7 | always fail in cross compiling, skip the check and give a warning | 7 | always fail in cross compiling, skip the check and give a warning |
| 8 | instead for cross compiling. | 8 | instead for cross compiling. |
| 9 | 9 | ||
| 10 | Upstream-Status: Inappropriate[embedded specific] | 10 | Upstream-Status: Inappropriate [embedded specific] |
| 11 | 11 | ||
| 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> |
| 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> |
| @@ -19,10 +19,10 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> | |||
| 19 | 1 file changed, 2 insertions(+), 1 deletion(-) | 19 | 1 file changed, 2 insertions(+), 1 deletion(-) |
| 20 | 20 | ||
| 21 | diff --git a/src/modules/rlm_krb5/configure.ac b/src/modules/rlm_krb5/configure.ac | 21 | diff --git a/src/modules/rlm_krb5/configure.ac b/src/modules/rlm_krb5/configure.ac |
| 22 | index efc9f29..98a97e4 100644 | 22 | index a0f510cfb3..d2f3eca03e 100644 |
| 23 | --- a/src/modules/rlm_krb5/configure.ac | 23 | --- a/src/modules/rlm_krb5/configure.ac |
| 24 | +++ b/src/modules/rlm_krb5/configure.ac | 24 | +++ b/src/modules/rlm_krb5/configure.ac |
| 25 | @@ -137,7 +137,8 @@ if test x$with_[]modname != xno; then | 25 | @@ -140,7 +140,8 @@ if test x$with_[]modname != xno; then |
| 26 | FR_SMART_CHECK_LIB(krb5, krb5_is_thread_safe) | 26 | FR_SMART_CHECK_LIB(krb5, krb5_is_thread_safe) |
| 27 | if test "x$ac_cv_lib_krb5_krb5_is_thread_safe" = xyes; then | 27 | if test "x$ac_cv_lib_krb5_krb5_is_thread_safe" = xyes; then |
| 28 | AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[return krb5_is_thread_safe() ? 0 : 1]])], | 28 | AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[return krb5_is_thread_safe() ? 0 : 1]])], |
| @@ -33,5 +33,5 @@ index efc9f29..98a97e4 100644 | |||
| 33 | else | 33 | else |
| 34 | krb5threadsafe="" | 34 | krb5threadsafe="" |
| 35 | -- | 35 | -- |
| 36 | 2.7.4 | 36 | 2.25.1 |
| 37 | 37 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-detection.patch b/meta-networking/recipes-connectivity/freeradius/files/0004-Fix-libtool-detection.patch index 4265f9d0de..479e1ba76f 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-detection.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0004-Fix-libtool-detection.patch | |||
| @@ -1,9 +1,7 @@ | |||
| 1 | From bfe4d7ed72edc9d4ae1a0f0d2dd84367d6214886 Mon Sep 17 00:00:00 2001 | 1 | From 5ba3d140842268cbbdd983266efecb1fba5bdd59 Mon Sep 17 00:00:00 2001 |
| 2 | From: Changqing Li <changqing.li@windriver.com> | 2 | From: Changqing Li <changqing.li@windriver.com> |
| 3 | Date: Thu, 22 Aug 2019 10:45:46 +0800 | 3 | Date: Thu, 22 Aug 2019 10:45:46 +0800 |
| 4 | Subject: [PATCH 1/2] Fix libtool detection | 4 | Subject: [PATCH] Fix libtool detection |
| 5 | |||
| 6 | Upstream-Status: pending | ||
| 7 | 5 | ||
| 8 | Use LT_INIT instead of the deprecated AC_PROG_LIBTOOL to detect libtool, so it | 6 | Use LT_INIT instead of the deprecated AC_PROG_LIBTOOL to detect libtool, so it |
| 9 | can work with our libtoolize and libtool. | 7 | can work with our libtoolize and libtool. |
| @@ -12,37 +10,20 @@ Simplify the detection of ltdl. It will find the ltdl from the sysroot; the | |||
| 12 | switch --with-system-libltdl is no longer needed. The code is copied from | 10 | switch --with-system-libltdl is no longer needed. The code is copied from |
| 13 | pulseaudio configure.ac, together with the comment paragraph. | 11 | pulseaudio configure.ac, together with the comment paragraph. |
| 14 | 12 | ||
| 15 | Also patch autogen.sh so it uses autoreconf, which handles libtoolize better. | 13 | Upstream-Status: Inappropriate [embedded specific] |
| 16 | 14 | ||
| 17 | Signed-off-by: Jesse Zhang <sen.zhang@windriver.com> | 15 | Signed-off-by: Jesse Zhang <sen.zhang@windriver.com> |
| 18 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | 16 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> |
| 19 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | 17 | Signed-off-by: Changqing Li <changqing.li@windriver.com> |
| 20 | --- | 18 | --- |
| 21 | autogen.sh | 5 +---- | ||
| 22 | configure.ac | 36 ++++++++++++++++++++++++++++++++++++ | 19 | configure.ac | 36 ++++++++++++++++++++++++++++++++++++ |
| 23 | 2 files changed, 37 insertions(+), 4 deletions(-) | 20 | 1 file changed, 36 insertions(+) |
| 24 | 21 | ||
| 25 | diff --git a/autogen.sh b/autogen.sh | ||
| 26 | index a1d08a6..959182b 100755 | ||
| 27 | --- a/autogen.sh | ||
| 28 | +++ b/autogen.sh | ||
| 29 | @@ -6,10 +6,7 @@ cd $parentdir | ||
| 30 | parentdir=`pwd` | ||
| 31 | m4include="-I$parentdir -I$parentdir/m4 -Im4" | ||
| 32 | |||
| 33 | -libtoolize -f -c | ||
| 34 | -#aclocal | ||
| 35 | -autoheader | ||
| 36 | -autoconf | ||
| 37 | +autoreconf -Wcross --verbose --install --force | ||
| 38 | |||
| 39 | mysubdirs="$mysubdirs `find src/modules/ -name configure -print | sed 's%/configure%%'`" | ||
| 40 | mysubdirs=`echo $mysubdirs` | ||
| 41 | diff --git a/configure.ac b/configure.ac | 22 | diff --git a/configure.ac b/configure.ac |
| 42 | index a7abf00..65db61e 100644 | 23 | index ad8bc8cdda..ef8fced680 100644 |
| 43 | --- a/configure.ac | 24 | --- a/configure.ac |
| 44 | +++ b/configure.ac | 25 | +++ b/configure.ac |
| 45 | @@ -220,6 +220,42 @@ dnl # See if we have Git. | 26 | @@ -321,6 +321,42 @@ dnl # See if we have Git. |
| 46 | dnl # | 27 | dnl # |
| 47 | AC_CHECK_PROG(GIT, git, yes, no) | 28 | AC_CHECK_PROG(GIT, git, yes, no) |
| 48 | 29 | ||
| @@ -86,5 +67,5 @@ index a7abf00..65db61e 100644 | |||
| 86 | dnl AC_ARG_WITH(disablemodulefoo, | 67 | dnl AC_ARG_WITH(disablemodulefoo, |
| 87 | dnl [ --without-rlm_foo Disables module compilation. Module list:] | 68 | dnl [ --without-rlm_foo Disables module compilation. Module list:] |
| 88 | -- | 69 | -- |
| 89 | 2.7.4 | 70 | 2.25.1 |
| 90 | 71 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-add-option-for-libcap.patch b/meta-networking/recipes-connectivity/freeradius/files/0005-configure.ac-add-option-for-libcap.patch index 4719358722..8ef3c4bdf9 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-configure.ac-add-option-for-libcap.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0005-configure.ac-add-option-for-libcap.patch | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | From 98a9eff357959d1113e33a615c2178751d5b2054 Mon Sep 17 00:00:00 2001 | 1 | From 9548dc5e1a6c835cd4f387ba384d8f3f14c3fc8b Mon Sep 17 00:00:00 2001 |
| 2 | From: Changqing Li <changqing.li@windriver.com> | 2 | From: Changqing Li <changqing.li@windriver.com> |
| 3 | Date: Thu, 22 Aug 2019 10:50:21 +0800 | 3 | Date: Thu, 22 Aug 2019 10:50:21 +0800 |
| 4 | Subject: [PATCH 2/2] configure.ac: add option for libcap | 4 | Subject: [PATCH] configure.ac: add option for libcap |
| 5 | 5 | ||
| 6 | Upstream-Status: Pending | 6 | Upstream-Status: Pending |
| 7 | 7 | ||
| @@ -12,10 +12,10 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> | |||
| 12 | 1 file changed, 27 insertions(+), 9 deletions(-) | 12 | 1 file changed, 27 insertions(+), 9 deletions(-) |
| 13 | 13 | ||
| 14 | diff --git a/configure.ac b/configure.ac | 14 | diff --git a/configure.ac b/configure.ac |
| 15 | index 65db61e..6486aac 100644 | 15 | index ef8fced680..263098f7fd 100644 |
| 16 | --- a/configure.ac | 16 | --- a/configure.ac |
| 17 | +++ b/configure.ac | 17 | +++ b/configure.ac |
| 18 | @@ -977,6 +977,22 @@ fi | 18 | @@ -1161,6 +1161,22 @@ fi |
| 19 | dnl Set by FR_SMART_CHECKLIB | 19 | dnl Set by FR_SMART_CHECKLIB |
| 20 | LIBS="${old_LIBS}" | 20 | LIBS="${old_LIBS}" |
| 21 | 21 | ||
| @@ -38,7 +38,7 @@ index 65db61e..6486aac 100644 | |||
| 38 | dnl Check for cap | 38 | dnl Check for cap |
| 39 | dnl extra argument: --with-cap-lib-dir=DIR | 39 | dnl extra argument: --with-cap-lib-dir=DIR |
| 40 | cap_lib_dir= | 40 | cap_lib_dir= |
| 41 | @@ -1010,15 +1026,17 @@ AC_ARG_WITH(cap-include-dir, | 41 | @@ -1194,15 +1210,17 @@ AC_ARG_WITH(cap-include-dir, |
| 42 | ;; | 42 | ;; |
| 43 | esac]) | 43 | esac]) |
| 44 | 44 | ||
| @@ -66,5 +66,5 @@ index 65db61e..6486aac 100644 | |||
| 66 | 66 | ||
| 67 | dnl # | 67 | dnl # |
| 68 | -- | 68 | -- |
| 69 | 2.7.4 | 69 | 2.25.1 |
| 70 | 70 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-avoid-searching-host-dirs.patch b/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch index 9c997661fc..8fd0dca443 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-avoid-searching-host-dirs.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch | |||
| @@ -1,14 +1,15 @@ | |||
| 1 | From dc41591d5ceb18900ec85894f8f7b7bb44bb3bd9 Mon Sep 17 00:00:00 2001 | 1 | From 8fe25b30b6fbb3170705f4468eb4c92eef3a968f Mon Sep 17 00:00:00 2001 |
| 2 | From: Jackie Huang <jackie.huang@windriver.com> | 2 | From: Jackie Huang <jackie.huang@windriver.com> |
| 3 | Date: Mon, 4 Jan 2016 01:44:04 -0500 | 3 | Date: Mon, 4 Jan 2016 01:44:04 -0500 |
| 4 | Subject: [PATCH] avoid searching host dirs | 4 | Subject: [PATCH] Avoid searching host dirs |
| 5 | 5 | ||
| 6 | Don't search the hardcoded host dirs to avoid | 6 | Don't search the hardcoded host dirs to avoid |
| 7 | host contamination. | 7 | host contamination. |
| 8 | 8 | ||
| 9 | Upstream-Status: Inappropriate [cross-compile specific] | 9 | Upstream-Status: Inappropriate [embedded specific] |
| 10 | 10 | ||
| 11 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | 11 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> |
| 12 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | ||
| 12 | --- | 13 | --- |
| 13 | acinclude.m4 | 4 ++-- | 14 | acinclude.m4 | 4 ++-- |
| 14 | src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac | 4 ++-- | 15 | src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac | 4 ++-- |
| @@ -21,19 +22,19 @@ Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | |||
| 21 | 8 files changed, 16 insertions(+), 16 deletions(-) | 22 | 8 files changed, 16 insertions(+), 16 deletions(-) |
| 22 | 23 | ||
| 23 | diff --git a/acinclude.m4 b/acinclude.m4 | 24 | diff --git a/acinclude.m4 b/acinclude.m4 |
| 24 | index da48acc..b513ae1 100644 | 25 | index a953d0e1b6..ede143d3c2 100644 |
| 25 | --- a/acinclude.m4 | 26 | --- a/acinclude.m4 |
| 26 | +++ b/acinclude.m4 | 27 | +++ b/acinclude.m4 |
| 27 | @@ -178,7 +178,7 @@ if test "x$smart_lib" = "x"; then | 28 | @@ -115,7 +115,7 @@ dnl # |
| 28 | FR_LOCATE_DIR(smart_lib_dir,[lib$1${libltdl_cv_shlibext}]) | 29 | dnl # Try to guess possible locations. |
| 29 | FR_LOCATE_DIR(smart_lib_dir,[lib$1.a]) | 30 | dnl # |
| 30 | 31 | if test "x$smart_lib" = "x"; then | |
| 31 | - for try in $smart_lib_dir /usr/local/lib /opt/lib; do | 32 | - for try in /usr/local/lib /opt/lib; do |
| 32 | + for try in $smart_lib_dir; do | 33 | + for try in $smart_lib_dir; do |
| 33 | AC_MSG_CHECKING([for $2 in -l$1 in $try]) | 34 | AC_MSG_CHECKING([for $2 in -l$1 in $try]) |
| 34 | LIBS="-l$1 $old_LIBS" | 35 | LIBS="-l$1 $old_LIBS" |
| 35 | CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS" | 36 | CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS" |
| 36 | @@ -218,7 +218,7 @@ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'` | 37 | @@ -155,7 +155,7 @@ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'` |
| 37 | old_CPPFLAGS="$CPPFLAGS" | 38 | old_CPPFLAGS="$CPPFLAGS" |
| 38 | smart_include= | 39 | smart_include= |
| 39 | dnl # The default directories we search in (in addition to the compilers search path) | 40 | dnl # The default directories we search in (in addition to the compilers search path) |
| @@ -43,10 +44,10 @@ index da48acc..b513ae1 100644 | |||
| 43 | dnl # Our local versions | 44 | dnl # Our local versions |
| 44 | _smart_try_dir= | 45 | _smart_try_dir= |
| 45 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac | 46 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac |
| 46 | index 75c851a..a262d71 100644 | 47 | index 44f84aa27e..23a1899591 100644 |
| 47 | --- a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac | 48 | --- a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac |
| 48 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac | 49 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac |
| 49 | @@ -57,14 +57,14 @@ if test x$with_[]modname != xno; then | 50 | @@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then |
| 50 | esac]) | 51 | esac]) |
| 51 | 52 | ||
| 52 | dnl Check for SQLConnect in -ldb2 | 53 | dnl Check for SQLConnect in -ldb2 |
| @@ -64,10 +65,10 @@ index 75c851a..a262d71 100644 | |||
| 64 | if test "x$ac_cv_header_sqlcli_h" != xyes; then | 65 | if test "x$ac_cv_header_sqlcli_h" != xyes; then |
| 65 | fail="$fail sqlcli.h" | 66 | fail="$fail sqlcli.h" |
| 66 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac | 67 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac |
| 67 | index 4da57b3..752b043 100644 | 68 | index 4c2fd7ba9e..10c864def5 100644 |
| 68 | --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac | 69 | --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac |
| 69 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac | 70 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac |
| 70 | @@ -56,14 +56,14 @@ if test x$with_[]modname != xno; then | 71 | @@ -60,14 +60,14 @@ if test x$with_[]modname != xno; then |
| 71 | esac]) | 72 | esac]) |
| 72 | 73 | ||
| 73 | dnl Check for isc_attach_database in -lfbclient | 74 | dnl Check for isc_attach_database in -lfbclient |
| @@ -85,10 +86,10 @@ index 4da57b3..752b043 100644 | |||
| 85 | if test "x$ac_cv_header_ibase_h" != xyes; then | 86 | if test "x$ac_cv_header_ibase_h" != xyes; then |
| 86 | fail="$fail ibase.h" | 87 | fail="$fail ibase.h" |
| 87 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac | 88 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac |
| 88 | index ba6304f..3393557 100644 | 89 | index d26ac9c431..6e4500e948 100644 |
| 89 | --- a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac | 90 | --- a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac |
| 90 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac | 91 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac |
| 91 | @@ -57,14 +57,14 @@ if test x$with_[]modname != xno; then | 92 | @@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then |
| 92 | esac]) | 93 | esac]) |
| 93 | 94 | ||
| 94 | dnl Check for SQLConnect in -liodbc | 95 | dnl Check for SQLConnect in -liodbc |
| @@ -106,10 +107,10 @@ index ba6304f..3393557 100644 | |||
| 106 | if test "x$ac_cv_header_isql_h" != xyes; then | 107 | if test "x$ac_cv_header_isql_h" != xyes; then |
| 107 | fail="$fail isql.h" | 108 | fail="$fail isql.h" |
| 108 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac | 109 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac |
| 109 | index 1401677..2e7db44 100644 | 110 | index df36da77bf..31359041c7 100644 |
| 110 | --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac | 111 | --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac |
| 111 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac | 112 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac |
| 112 | @@ -136,7 +136,7 @@ if test x$with_[]modname != xno; then | 113 | @@ -140,7 +140,7 @@ if test x$with_[]modname != xno; then |
| 113 | 114 | ||
| 114 | dnl # Check for libmysqlclient_r | 115 | dnl # Check for libmysqlclient_r |
| 115 | if test "x$have_a_libmysqlclient" != "xyes"; then | 116 | if test "x$have_a_libmysqlclient" != "xyes"; then |
| @@ -118,7 +119,7 @@ index 1401677..2e7db44 100644 | |||
| 118 | FR_SMART_CHECK_LIB(mysqlclient_r, mysql_init) | 119 | FR_SMART_CHECK_LIB(mysqlclient_r, mysql_init) |
| 119 | if test "x$ac_cv_lib_mysqlclient_r_mysql_init" = "xyes"; then | 120 | if test "x$ac_cv_lib_mysqlclient_r_mysql_init" = "xyes"; then |
| 120 | have_a_libmysqlclient='yes' | 121 | have_a_libmysqlclient='yes' |
| 121 | @@ -145,7 +145,7 @@ if test x$with_[]modname != xno; then | 122 | @@ -149,7 +149,7 @@ if test x$with_[]modname != xno; then |
| 122 | 123 | ||
| 123 | dnl # Check for libmysqlclient | 124 | dnl # Check for libmysqlclient |
| 124 | if test "x$have_a_libmysqlclient" != "xyes"; then | 125 | if test "x$have_a_libmysqlclient" != "xyes"; then |
| @@ -127,7 +128,7 @@ index 1401677..2e7db44 100644 | |||
| 127 | FR_SMART_CHECK_LIB(mysqlclient, mysql_init) | 128 | FR_SMART_CHECK_LIB(mysqlclient, mysql_init) |
| 128 | if test "x$ac_cv_lib_mysqlclient_mysql_init" = "xyes"; then | 129 | if test "x$ac_cv_lib_mysqlclient_mysql_init" = "xyes"; then |
| 129 | have_a_libmysqlclient='yes' | 130 | have_a_libmysqlclient='yes' |
| 130 | @@ -189,7 +189,7 @@ if test x$with_[]modname != xno; then | 131 | @@ -243,7 +243,7 @@ if test x$with_[]modname != xno; then |
| 131 | fi | 132 | fi |
| 132 | 133 | ||
| 133 | if test "x$have_mysql_h" != "xyes"; then | 134 | if test "x$have_mysql_h" != "xyes"; then |
| @@ -137,10 +138,10 @@ index 1401677..2e7db44 100644 | |||
| 137 | if test "x$ac_cv_header_mysql_mysql_h" = "xyes"; then | 138 | if test "x$ac_cv_header_mysql_mysql_h" = "xyes"; then |
| 138 | AC_DEFINE(HAVE_MYSQL_MYSQL_H, [], [Define if you have <mysql/mysql.h>]) | 139 | AC_DEFINE(HAVE_MYSQL_MYSQL_H, [], [Define if you have <mysql/mysql.h>]) |
| 139 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac | 140 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac |
| 140 | index 3178462..5cbc8c2 100644 | 141 | index 3b45da582a..03e6607d2b 100644 |
| 141 | --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac | 142 | --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac |
| 142 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac | 143 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac |
| 143 | @@ -63,7 +63,7 @@ if test x$with_[]modname != xno; then | 144 | @@ -68,7 +68,7 @@ if test x$with_[]modname != xno; then |
| 144 | dnl # Check for header files | 145 | dnl # Check for header files |
| 145 | dnl ############################################################ | 146 | dnl ############################################################ |
| 146 | 147 | ||
| @@ -150,10 +151,10 @@ index 3178462..5cbc8c2 100644 | |||
| 150 | if test "x$ORACLE_HOME" != "x"; then | 151 | if test "x$ORACLE_HOME" != "x"; then |
| 151 | smart_try_dir="${smart_try_dir} ${ORACLE_HOME}/include" | 152 | smart_try_dir="${smart_try_dir} ${ORACLE_HOME}/include" |
| 152 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac | 153 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac |
| 153 | index 4f9a890..e1cf811 100644 | 154 | index 8ac1022e89..d46c0f66bf 100644 |
| 154 | --- a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac | 155 | --- a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac |
| 155 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac | 156 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac |
| 156 | @@ -41,7 +41,7 @@ if test x$with_[]modname != xno; then | 157 | @@ -45,7 +45,7 @@ if test x$with_[]modname != xno; then |
| 157 | esac ] | 158 | esac ] |
| 158 | ) | 159 | ) |
| 159 | 160 | ||
| @@ -162,7 +163,7 @@ index 4f9a890..e1cf811 100644 | |||
| 162 | FR_SMART_CHECK_INCLUDE(libpq-fe.h) | 163 | FR_SMART_CHECK_INCLUDE(libpq-fe.h) |
| 163 | if test "x$ac_cv_header_libpqmfe_h" != "xyes"; then | 164 | if test "x$ac_cv_header_libpqmfe_h" != "xyes"; then |
| 164 | fail="$fail libpq-fe.h" | 165 | fail="$fail libpq-fe.h" |
| 165 | @@ -76,7 +76,7 @@ if test x$with_[]modname != xno; then | 166 | @@ -94,7 +94,7 @@ if test x$with_[]modname != xno; then |
| 166 | ]) | 167 | ]) |
| 167 | fi | 168 | fi |
| 168 | 169 | ||
| @@ -172,10 +173,10 @@ index 4f9a890..e1cf811 100644 | |||
| 172 | if test "x$ac_cv_lib_pq_PQconnectdb" != "xyes"; then | 173 | if test "x$ac_cv_lib_pq_PQconnectdb" != "xyes"; then |
| 173 | fail="$fail libpq" | 174 | fail="$fail libpq" |
| 174 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac | 175 | diff --git a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac |
| 175 | index 3545387..c543ed4 100644 | 176 | index f10279fe1f..0081a338c8 100644 |
| 176 | --- a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac | 177 | --- a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac |
| 177 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac | 178 | +++ b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac |
| 178 | @@ -57,14 +57,14 @@ if test x$with_[]modname != xno; then | 179 | @@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then |
| 179 | esac]) | 180 | esac]) |
| 180 | 181 | ||
| 181 | dnl Check for SQLConnect in -lodbc | 182 | dnl Check for SQLConnect in -lodbc |
| @@ -193,5 +194,5 @@ index 3545387..c543ed4 100644 | |||
| 193 | if test "x$ac_cv_header_sql_h" != xyes; then | 194 | if test "x$ac_cv_header_sql_h" != xyes; then |
| 194 | fail="$fail sql.h" | 195 | fail="$fail sql.h" |
| 195 | -- | 196 | -- |
| 196 | 1.9.1 | 197 | 2.25.1 |
| 197 | 198 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-rlm_python-add-PY_INC_DIR.patch b/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch index 675940dd6c..cb71fb1373 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-rlm_python-add-PY_INC_DIR.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | From a0bf65e04d2bbd3271cab94bd5ac93f8e877bfc5 Mon Sep 17 00:00:00 2001 | 1 | From e4ff7a2a9834e2589bc7bdda4b74f5bc962b15e6 Mon Sep 17 00:00:00 2001 |
| 2 | From: Jackie Huang <jackie.huang@windriver.com> | 2 | From: Jackie Huang <jackie.huang@windriver.com> |
| 3 | Date: Wed, 27 Jan 2016 05:07:19 -0500 | 3 | Date: Wed, 27 Jan 2016 05:07:19 -0500 |
| 4 | Subject: [PATCH] rlm_python: add PY_INC_DIR in search dir | 4 | Subject: [PATCH] rlm_python: add PY_INC_DIR in search dir |
| 5 | 5 | ||
| 6 | Upstream-Status: Pending | ||
| 7 | |||
| 8 | configure option --with-rlm-python-include-dir is used to set | 6 | configure option --with-rlm-python-include-dir is used to set |
| 9 | PY_INC_DIR which is never used and it fails to find Python.h, | 7 | PY_INC_DIR which is never used and it fails to find Python.h, |
| 10 | so add it into search dir to fix it. | 8 | so add it into search dir to fix it. |
| 11 | 9 | ||
| 10 | Upstream-Status: Inappropriate [embedded specific] | ||
| 11 | |||
| 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> |
| 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> |
| 14 | --- | 14 | --- |
| @@ -16,10 +16,10 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | |||
| 16 | 1 file changed, 1 insertion(+), 1 deletion(-) | 16 | 1 file changed, 1 insertion(+), 1 deletion(-) |
| 17 | 17 | ||
| 18 | diff --git a/src/modules/rlm_python/configure.ac b/src/modules/rlm_python/configure.ac | 18 | diff --git a/src/modules/rlm_python/configure.ac b/src/modules/rlm_python/configure.ac |
| 19 | index 831a33a..c3792d8 100644 | 19 | index 08ecb62518..d5c0944ff1 100644 |
| 20 | --- a/src/modules/rlm_python/configure.ac | 20 | --- a/src/modules/rlm_python/configure.ac |
| 21 | +++ b/src/modules/rlm_python/configure.ac | 21 | +++ b/src/modules/rlm_python/configure.ac |
| 22 | @@ -93,7 +93,7 @@ if test x$with_[]modname != xno; then | 22 | @@ -98,7 +98,7 @@ if test x$with_[]modname != xno; then |
| 23 | 23 | ||
| 24 | old_CFLAGS=$CFLAGS | 24 | old_CFLAGS=$CFLAGS |
| 25 | CFLAGS="$CFLAGS $PY_CFLAGS" | 25 | CFLAGS="$CFLAGS $PY_CFLAGS" |
| @@ -29,5 +29,5 @@ index 831a33a..c3792d8 100644 | |||
| 29 | CFLAGS=$old_CFLAGS | 29 | CFLAGS=$old_CFLAGS |
| 30 | 30 | ||
| 31 | -- | 31 | -- |
| 32 | 2.10.2 | 32 | 2.25.1 |
| 33 | 33 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-do-not-use-jlibtool.patch b/meta-networking/recipes-connectivity/freeradius/files/0008-libtool-do-not-use-jlibtool.patch index 1954586b2b..559b857b63 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-libtool-do-not-use-jlibtool.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0008-libtool-do-not-use-jlibtool.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 16bf899447fc1524ffc3c79e1d35380e5285a552 Mon Sep 17 00:00:00 2001 | 1 | From d0fa5b259c2dc942d0a43a9cf1bfc32f40c184f9 Mon Sep 17 00:00:00 2001 |
| 2 | From: Jackie Huang <jackie.huang@windriver.com> | 2 | From: Jackie Huang <jackie.huang@windriver.com> |
| 3 | Date: Thu, 7 Jan 2016 22:37:30 -0800 | 3 | Date: Thu, 7 Jan 2016 22:37:30 -0800 |
| 4 | Subject: [PATCH] libtool: do not use jlibtool | 4 | Subject: [PATCH] libtool: do not use jlibtool |
| @@ -7,7 +7,7 @@ jlibtool is hardcoded to be used but we need to use | |||
| 7 | our libtool, so fix the makfiles to make it compatible | 7 | our libtool, so fix the makfiles to make it compatible |
| 8 | with our libtool. | 8 | with our libtool. |
| 9 | 9 | ||
| 10 | Upstream-Status: Inappropriate [oe specific] | 10 | Upstream-Status: Inappropriate [embedded specific] |
| 11 | 11 | ||
| 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> | 12 | Signed-off-by: Jackie Huang <jackie.huang@windriver.com> |
| 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | 13 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> |
| @@ -19,7 +19,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | |||
| 19 | 4 files changed, 27 insertions(+), 15 deletions(-) | 19 | 4 files changed, 27 insertions(+), 15 deletions(-) |
| 20 | 20 | ||
| 21 | diff --git a/Make.inc.in b/Make.inc.in | 21 | diff --git a/Make.inc.in b/Make.inc.in |
| 22 | index 7a77625..fd8aa3e 100644 | 22 | index 05f82776ff..e78f3fe9dc 100644 |
| 23 | --- a/Make.inc.in | 23 | --- a/Make.inc.in |
| 24 | +++ b/Make.inc.in | 24 | +++ b/Make.inc.in |
| 25 | @@ -57,7 +57,7 @@ CPPFLAGS = @CPPFLAGS@ | 25 | @@ -57,7 +57,7 @@ CPPFLAGS = @CPPFLAGS@ |
| @@ -31,7 +31,7 @@ index 7a77625..fd8aa3e 100644 | |||
| 31 | ACLOCAL = @ACLOCAL@ | 31 | ACLOCAL = @ACLOCAL@ |
| 32 | AUTOCONF = @AUTOCONF@ | 32 | AUTOCONF = @AUTOCONF@ |
| 33 | AUTOHEADER = @AUTOHEADER@ | 33 | AUTOHEADER = @AUTOHEADER@ |
| 34 | @@ -163,7 +163,7 @@ ANALYZE.c := @clang_path@ | 34 | @@ -168,7 +168,7 @@ ANALYZE.c := @clang_path@ |
| 35 | # | 35 | # |
| 36 | ifeq "$(USE_SHARED_LIBS)" "yes" | 36 | ifeq "$(USE_SHARED_LIBS)" "yes" |
| 37 | TESTBINDIR = ./$(BUILD_DIR)/bin/local | 37 | TESTBINDIR = ./$(BUILD_DIR)/bin/local |
| @@ -41,10 +41,10 @@ index 7a77625..fd8aa3e 100644 | |||
| 41 | TESTBINDIR = ./$(BUILD_DIR)/bin | 41 | TESTBINDIR = ./$(BUILD_DIR)/bin |
| 42 | TESTBIN = ./$(BUILD_DIR)/bin | 42 | TESTBIN = ./$(BUILD_DIR)/bin |
| 43 | diff --git a/scripts/boiler.mk b/scripts/boiler.mk | 43 | diff --git a/scripts/boiler.mk b/scripts/boiler.mk |
| 44 | index bccec5e..926a13e 100644 | 44 | index 2ce0c18f34..567cc0f22f 100644 |
| 45 | --- a/scripts/boiler.mk | 45 | --- a/scripts/boiler.mk |
| 46 | +++ b/scripts/boiler.mk | 46 | +++ b/scripts/boiler.mk |
| 47 | @@ -266,6 +266,7 @@ define COMPILE_C_CMDS | 47 | @@ -272,6 +272,7 @@ define COMPILE_C_CMDS |
| 48 | $(Q)$(ECHO) CC $< | 48 | $(Q)$(ECHO) CC $< |
| 49 | $(Q)$(strip ${COMPILE.c} -o $@ -c -MD ${CPPFLAGS} ${CFLAGS} ${SRC_CFLAGS} ${INCDIRS} \ | 49 | $(Q)$(strip ${COMPILE.c} -o $@ -c -MD ${CPPFLAGS} ${CFLAGS} ${SRC_CFLAGS} ${INCDIRS} \ |
| 50 | $(addprefix -I, ${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} $<) | 50 | $(addprefix -I, ${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} $<) |
| @@ -52,7 +52,7 @@ index bccec5e..926a13e 100644 | |||
| 52 | endef | 52 | endef |
| 53 | else | 53 | else |
| 54 | # | 54 | # |
| 55 | @@ -281,6 +282,7 @@ define COMPILE_C_CMDS | 55 | @@ -287,6 +288,7 @@ define COMPILE_C_CMDS |
| 56 | $(Q)cppcheck --enable=style -q ${CHECKFLAGS} $(filter -isystem%,${SRC_CFLAGS}) \ | 56 | $(Q)cppcheck --enable=style -q ${CHECKFLAGS} $(filter -isystem%,${SRC_CFLAGS}) \ |
| 57 | $(filter -I%,${SRC_CFLAGS}) $(filter -D%,${SRC_CFLAGS}) ${INCDIRS} \ | 57 | $(filter -I%,${SRC_CFLAGS}) $(filter -D%,${SRC_CFLAGS}) ${INCDIRS} \ |
| 58 | $(addprefix -I,${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} --suppress=variableScope --suppress=invalidscanf $< | 58 | $(addprefix -I,${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} --suppress=variableScope --suppress=invalidscanf $< |
| @@ -61,7 +61,7 @@ index bccec5e..926a13e 100644 | |||
| 61 | endif | 61 | endif |
| 62 | 62 | ||
| 63 | diff --git a/scripts/install.mk b/scripts/install.mk | 63 | diff --git a/scripts/install.mk b/scripts/install.mk |
| 64 | index 9164115..e38c1ed 100644 | 64 | index 916411563b..e38c1ed697 100644 |
| 65 | --- a/scripts/install.mk | 65 | --- a/scripts/install.mk |
| 66 | +++ b/scripts/install.mk | 66 | +++ b/scripts/install.mk |
| 67 | @@ -46,7 +46,7 @@ define ADD_INSTALL_RULE.exe | 67 | @@ -46,7 +46,7 @@ define ADD_INSTALL_RULE.exe |
| @@ -116,10 +116,10 @@ index 9164115..e38c1ed 100644 | |||
| 116 | 116 | ||
| 117 | 117 | ||
| 118 | diff --git a/scripts/libtool.mk b/scripts/libtool.mk | 118 | diff --git a/scripts/libtool.mk b/scripts/libtool.mk |
| 119 | index 57915e1..2cb2f7d 100644 | 119 | index 381127ec2d..e83d7e6ad7 100644 |
| 120 | --- a/scripts/libtool.mk | 120 | --- a/scripts/libtool.mk |
| 121 | +++ b/scripts/libtool.mk | 121 | +++ b/scripts/libtool.mk |
| 122 | @@ -55,7 +55,9 @@ ifeq "${LIBTOOL}" "JLIBTOOL" | 122 | @@ -60,7 +60,9 @@ ifeq "${LIBTOOL}" "JLIBTOOL" |
| 123 | # Tell GNU Make to use this value, rather than anything specified | 123 | # Tell GNU Make to use this value, rather than anything specified |
| 124 | # on the command line. | 124 | # on the command line. |
| 125 | override LIBTOOL := ${JLIBTOOL} | 125 | override LIBTOOL := ${JLIBTOOL} |
| @@ -130,7 +130,7 @@ index 57915e1..2cb2f7d 100644 | |||
| 130 | 130 | ||
| 131 | # When using libtool, it produces a '.libs' directory. Ensure that it | 131 | # When using libtool, it produces a '.libs' directory. Ensure that it |
| 132 | # is removed on "make clean", too. | 132 | # is removed on "make clean", too. |
| 133 | @@ -69,11 +71,19 @@ clean: .libs_clean | 133 | @@ -74,11 +76,19 @@ clean: .libs_clean |
| 134 | # Re-define compilers and linkers | 134 | # Re-define compilers and linkers |
| 135 | # | 135 | # |
| 136 | OBJ_EXT = lo | 136 | OBJ_EXT = lo |
| @@ -156,5 +156,5 @@ index 57915e1..2cb2f7d 100644 | |||
| 156 | 156 | ||
| 157 | # LIBTOOL_ENDINGS - Given a library ending in ".a" or ".so", replace that | 157 | # LIBTOOL_ENDINGS - Given a library ending in ".a" or ".so", replace that |
| 158 | -- | 158 | -- |
| 159 | 2.10.2 | 159 | 2.25.1 |
| 160 | 160 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-quoting-for-BUILT_WITH.patch b/meta-networking/recipes-connectivity/freeradius/files/0009-Fix-quoting-for-BUILD_WITH.patch index b0929c4b07..9386675e46 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-quoting-for-BUILT_WITH.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0009-Fix-quoting-for-BUILD_WITH.patch | |||
| @@ -1,4 +1,7 @@ | |||
| 1 | Fix quoting for BUILD_WITH | 1 | From 3e701d6274924adaed568e22af2362aa5af1f055 Mon Sep 17 00:00:00 2001 |
| 2 | From: Peter Seebach <peter.seebach@windriver.com> | ||
| 3 | Date: Sun, 8 Jan 2023 23:01:28 +0800 | ||
| 4 | Subject: [PATCH] Fix quoting for BUILD_WITH | ||
| 2 | 5 | ||
| 3 | The escaped quotes are to make the -D values produce strings which | 6 | The escaped quotes are to make the -D values produce strings which |
| 4 | can be used to display these values. However, if the values are more | 7 | can be used to display these values. However, if the values are more |
| @@ -16,7 +19,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | |||
| 16 | 3 files changed, 3 insertions(+), 3 deletions(-) | 19 | 3 files changed, 3 insertions(+), 3 deletions(-) |
| 17 | 20 | ||
| 18 | diff --git a/src/main/libfreeradius-server.mk b/src/main/libfreeradius-server.mk | 21 | diff --git a/src/main/libfreeradius-server.mk b/src/main/libfreeradius-server.mk |
| 19 | index 4495f72..07c28f1 100644 | 22 | index 4495f72481..07c28f1968 100644 |
| 20 | --- a/src/main/libfreeradius-server.mk | 23 | --- a/src/main/libfreeradius-server.mk |
| 21 | +++ b/src/main/libfreeradius-server.mk | 24 | +++ b/src/main/libfreeradius-server.mk |
| 22 | @@ -18,5 +18,5 @@ SOURCES := conffile.c \ | 25 | @@ -18,5 +18,5 @@ SOURCES := conffile.c \ |
| @@ -27,7 +30,7 @@ index 4495f72..07c28f1 100644 | |||
| 27 | +SRC_CFLAGS += -DBUILT_WITH_CPPFLAGS="\"$(CPPFLAGS)\"" -DBUILT_WITH_CFLAGS="\"$(CFLAGS)\"" -DBUILT_WITH_LDFLAGS="\"$(LDFLAGS)\"" -DBUILT_WITH_LIBS="\"$(LIBS)\"" | 30 | +SRC_CFLAGS += -DBUILT_WITH_CPPFLAGS="\"$(CPPFLAGS)\"" -DBUILT_WITH_CFLAGS="\"$(CFLAGS)\"" -DBUILT_WITH_LDFLAGS="\"$(LDFLAGS)\"" -DBUILT_WITH_LIBS="\"$(LIBS)\"" |
| 28 | endif | 31 | endif |
| 29 | diff --git a/src/main/unittest.mk b/src/main/unittest.mk | 32 | diff --git a/src/main/unittest.mk b/src/main/unittest.mk |
| 30 | index 09f3938..ed33952 100644 | 33 | index edd4f133a7..b5b44d5e11 100644 |
| 31 | --- a/src/main/unittest.mk | 34 | --- a/src/main/unittest.mk |
| 32 | +++ b/src/main/unittest.mk | 35 | +++ b/src/main/unittest.mk |
| 33 | @@ -21,5 +21,5 @@ TGT_PREREQS += libfreeradius-eap.a | 36 | @@ -21,5 +21,5 @@ TGT_PREREQS += libfreeradius-eap.a |
| @@ -38,7 +41,7 @@ index 09f3938..ed33952 100644 | |||
| 38 | +SRC_CFLAGS += -DBUILT_WITH_CPPFLAGS="\"$(CPPFLAGS)\"" -DBUILT_WITH_CFLAGS="\"$(CFLAGS)\"" -DBUILT_WITH_LDFLAGS="\"$(LDFLAGS)\"" -DBUILT_WITH_LIBS="\"$(LIBS)\"" | 41 | +SRC_CFLAGS += -DBUILT_WITH_CPPFLAGS="\"$(CPPFLAGS)\"" -DBUILT_WITH_CFLAGS="\"$(CFLAGS)\"" -DBUILT_WITH_LDFLAGS="\"$(LDFLAGS)\"" -DBUILT_WITH_LIBS="\"$(LIBS)\"" |
| 39 | endif | 42 | endif |
| 40 | diff --git a/src/modules/rlm_eap/radeapclient.mk b/src/modules/rlm_eap/radeapclient.mk | 43 | diff --git a/src/modules/rlm_eap/radeapclient.mk b/src/modules/rlm_eap/radeapclient.mk |
| 41 | index 6068f54..7d3c556 100644 | 44 | index 6068f54813..7d3c55625b 100644 |
| 42 | --- a/src/modules/rlm_eap/radeapclient.mk | 45 | --- a/src/modules/rlm_eap/radeapclient.mk |
| 43 | +++ b/src/modules/rlm_eap/radeapclient.mk | 46 | +++ b/src/modules/rlm_eap/radeapclient.mk |
| 44 | @@ -23,7 +23,7 @@ SRC_CFLAGS += -DWITH_EAPCLIENT | 47 | @@ -23,7 +23,7 @@ SRC_CFLAGS += -DWITH_EAPCLIENT |
| @@ -51,5 +54,5 @@ index 6068f54..7d3c556 100644 | |||
| 51 | 54 | ||
| 52 | endif | 55 | endif |
| 53 | -- | 56 | -- |
| 54 | 2.10.2 | 57 | 2.25.1 |
| 55 | 58 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-error-for-expansion-of-macro.patch b/meta-networking/recipes-connectivity/freeradius/files/0010-fix-error-for-expansion-of-macro-in-thread.h.patch index af1bff051f..051b66af8f 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/freeradius-fix-error-for-expansion-of-macro.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0010-fix-error-for-expansion-of-macro-in-thread.h.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 5b6d8b14f2696fcf1dca119212f9d0a0fa04defd Mon Sep 17 00:00:00 2001 | 1 | From 30ce5ccd62446349d432ff65d3fe8d46872423c8 Mon Sep 17 00:00:00 2001 |
| 2 | From: Yi Zhao <yi.zhao@windriver.com> | 2 | From: Yi Zhao <yi.zhao@windriver.com> |
| 3 | Date: Wed, 18 Jan 2017 14:59:39 +0800 | 3 | Date: Wed, 18 Jan 2017 14:59:39 +0800 |
| 4 | Subject: [PATCH] fix error for expansion of macro in thread.h | 4 | Subject: [PATCH] fix error for expansion of macro in thread.h |
| @@ -22,7 +22,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | |||
| 22 | 1 file changed, 5 insertions(+), 5 deletions(-) | 22 | 1 file changed, 5 insertions(+), 5 deletions(-) |
| 23 | 23 | ||
| 24 | diff --git a/src/include/threads.h b/src/include/threads.h | 24 | diff --git a/src/include/threads.h b/src/include/threads.h |
| 25 | index e36d81d..2bcb6aa 100644 | 25 | index e36d81dac0..2bcb6aadcb 100644 |
| 26 | --- a/src/include/threads.h | 26 | --- a/src/include/threads.h |
| 27 | +++ b/src/include/threads.h | 27 | +++ b/src/include/threads.h |
| 28 | @@ -89,7 +89,7 @@ static _t __fr_thread_local_init_##_n(pthread_destructor_t func)\ | 28 | @@ -89,7 +89,7 @@ static _t __fr_thread_local_init_##_n(pthread_destructor_t func)\ |
| @@ -57,5 +57,5 @@ index e36d81d..2bcb6aa 100644 | |||
| 57 | #endif | 57 | #endif |
| 58 | #endif | 58 | #endif |
| 59 | -- | 59 | -- |
| 60 | 2.10.2 | 60 | 2.25.1 |
| 61 | 61 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch b/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch index db8caab12e..69125eb3cb 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/0001-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 66e8bcdcca8971b5c43c31755d56d7f675d8b5ff Mon Sep 17 00:00:00 2001 | 1 | From f0e764826e3a85488047f7f4e94ebf91460d2c12 Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Fri, 16 Jun 2017 20:10:49 -0700 | 3 | Date: Fri, 16 Jun 2017 20:10:49 -0700 |
| 4 | Subject: [PATCH] rlm_mschap: Use includedir instead of hardcoding /usr/include | 4 | Subject: [PATCH] rlm_mschap: Use includedir instead of hardcoding /usr/include |
| @@ -13,12 +13,12 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> | |||
| 13 | src/modules/rlm_mschap/configure.ac | 2 +- | 13 | src/modules/rlm_mschap/configure.ac | 2 +- |
| 14 | 1 file changed, 1 insertion(+), 1 deletion(-) | 14 | 1 file changed, 1 insertion(+), 1 deletion(-) |
| 15 | 15 | ||
| 16 | Index: freeradius-server-3.0.14/src/modules/rlm_mschap/configure.ac | 16 | diff --git a/src/modules/rlm_mschap/configure.ac b/src/modules/rlm_mschap/configure.ac |
| 17 | =================================================================== | 17 | index 0fd105d7e6..6ab15509e5 100644 |
| 18 | --- freeradius-server-3.0.14.orig/src/modules/rlm_mschap/configure.ac | 18 | --- a/src/modules/rlm_mschap/configure.ac |
| 19 | +++ freeradius-server-3.0.14/src/modules/rlm_mschap/configure.ac | 19 | +++ b/src/modules/rlm_mschap/configure.ac |
| 20 | @@ -72,7 +72,7 @@ if test x$with_[]modname != xno; then | 20 | @@ -75,7 +75,7 @@ if test x$with_[]modname != xno; then |
| 21 | mod_ldflags="-framework DirectoryService" | 21 | mod_ldflags="-F /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -framework DirectoryService" |
| 22 | fi | 22 | fi |
| 23 | 23 | ||
| 24 | - smart_try_dir="$winbind_include_dir /usr/include/samba-4.0" | 24 | - smart_try_dir="$winbind_include_dir /usr/include/samba-4.0" |
| @@ -26,3 +26,6 @@ Index: freeradius-server-3.0.14/src/modules/rlm_mschap/configure.ac | |||
| 26 | FR_SMART_CHECK_INCLUDE(wbclient.h, [#include <stdint.h> | 26 | FR_SMART_CHECK_INCLUDE(wbclient.h, [#include <stdint.h> |
| 27 | #include <stdbool.h>]) | 27 | #include <stdbool.h>]) |
| 28 | if test "x$ac_cv_header_wbclient_h" != "xyes"; then | 28 | if test "x$ac_cv_header_wbclient_h" != "xyes"; then |
| 29 | -- | ||
| 30 | 2.25.1 | ||
| 31 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-existed-certificate-err.patch b/meta-networking/recipes-connectivity/freeradius/files/0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch index 669f363e72..cbac989284 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-existed-certificate-err.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 084f5467672f2ae37003b77e8f8706772f3da3ec Mon Sep 17 00:00:00 2001 | 1 | From 0f9f18fc330fe88080be13e43f300fbf7ba4a85a Mon Sep 17 00:00:00 2001 |
| 2 | From: Mingli Yu <mingli.yu@windriver.com> | 2 | From: Mingli Yu <mingli.yu@windriver.com> |
| 3 | Date: Mon, 13 Jul 2020 07:01:45 +0000 | 3 | Date: Mon, 13 Jul 2020 07:01:45 +0000 |
| 4 | Subject: [PATCH] raddb/certs/Makefile: fix the existed certificate error | 4 | Subject: [PATCH] raddb/certs/Makefile: fix the existed certificate error |
| @@ -29,13 +29,13 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | |||
| 29 | 1 file changed, 2 insertions(+), 2 deletions(-) | 29 | 1 file changed, 2 insertions(+), 2 deletions(-) |
| 30 | 30 | ||
| 31 | diff --git a/raddb/certs/Makefile b/raddb/certs/Makefile | 31 | diff --git a/raddb/certs/Makefile b/raddb/certs/Makefile |
| 32 | index 5cbfd467ce..77eec9baa1 100644 | 32 | index c9fbc9e864..d064fe252d 100644 |
| 33 | --- a/raddb/certs/Makefile | 33 | --- a/raddb/certs/Makefile |
| 34 | +++ b/raddb/certs/Makefile | 34 | +++ b/raddb/certs/Makefile |
| 35 | @@ -92,7 +92,7 @@ server.csr server.key: server.cnf | 35 | @@ -92,7 +92,7 @@ server.csr server.key: server.cnf |
| 36 | chmod g+r server.key | 36 | chmod g+r server.key |
| 37 | 37 | ||
| 38 | server.crt: server.csr ca.key ca.pem | 38 | server.crt: ca.key ca.pem server.csr |
| 39 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf | 39 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf |
| 40 | + @[ -f server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf | 40 | + @[ -f server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf |
| 41 | 41 | ||
| @@ -44,12 +44,12 @@ index 5cbfd467ce..77eec9baa1 100644 | |||
| 44 | @@ -117,7 +117,7 @@ client.csr client.key: client.cnf | 44 | @@ -117,7 +117,7 @@ client.csr client.key: client.cnf |
| 45 | chmod g+r client.key | 45 | chmod g+r client.key |
| 46 | 46 | ||
| 47 | client.crt: client.csr ca.pem ca.key | 47 | client.crt: ca.key ca.pem client.csr |
| 48 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf | 48 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf |
| 49 | + @[ -f client.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf | 49 | + @[ -f client.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf |
| 50 | 50 | ||
| 51 | client.p12: client.crt | 51 | client.p12: client.crt |
| 52 | $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) | 52 | $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) |
| 53 | -- | 53 | -- |
| 54 | 2.26.2 | 54 | 2.25.1 |
| 55 | 55 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-occasional-verification.patch b/meta-networking/recipes-connectivity/freeradius/files/0013-raddb-certs-Makefile-fix-the-occasional-verification.patch index dce0427e1a..287e47adcc 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/0001-raddb-certs-Makefile-fix-the-occasional-verification.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0013-raddb-certs-Makefile-fix-the-occasional-verification.patch | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | From 3eda5d35fbaf66ed6bdc86ada4320a0a18681b7e Mon Sep 17 00:00:00 2001 | 1 | From bb1cb2ffc7a31c0a2bb2de51ef82d304b0a107c3 Mon Sep 17 00:00:00 2001 |
| 2 | From: Mingli Yu <mingli.yu@windriver.com> | 2 | From: Mingli Yu <mingli.yu@windriver.com> |
| 3 | Date: Wed, 5 Aug 2020 07:23:11 +0000 | 3 | Date: Wed, 5 Aug 2020 07:23:11 +0000 |
| 4 | Subject: [PATCH] raddb/certs/Makefile: fix the occasional verification failure | 4 | Subject: [PATCH] raddb/certs/Makefile: fix the occasional verification failure |
| @@ -29,7 +29,7 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | |||
| 29 | 1 file changed, 15 insertions(+), 15 deletions(-) | 29 | 1 file changed, 15 insertions(+), 15 deletions(-) |
| 30 | 30 | ||
| 31 | diff --git a/raddb/certs/Makefile b/raddb/certs/Makefile | 31 | diff --git a/raddb/certs/Makefile b/raddb/certs/Makefile |
| 32 | index 77eec9baa1..3dcb63fe71 100644 | 32 | index d064fe252d..86f4547804 100644 |
| 33 | --- a/raddb/certs/Makefile | 33 | --- a/raddb/certs/Makefile |
| 34 | +++ b/raddb/certs/Makefile | 34 | +++ b/raddb/certs/Makefile |
| 35 | @@ -59,7 +59,7 @@ passwords.mk: server.cnf ca.cnf client.cnf inner-server.cnf | 35 | @@ -59,7 +59,7 @@ passwords.mk: server.cnf ca.cnf client.cnf inner-server.cnf |
| @@ -71,7 +71,7 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 71 | + @[ -f server.csr ] || $(OPENSSL) req -new -out server.csr -keyout server.key -config ./server.cnf | 71 | + @[ -f server.csr ] || $(OPENSSL) req -new -out server.csr -keyout server.key -config ./server.cnf |
| 72 | chmod g+r server.key | 72 | chmod g+r server.key |
| 73 | 73 | ||
| 74 | server.crt: server.csr ca.key ca.pem | 74 | server.crt: ca.key ca.pem server.csr |
| 75 | @[ -f server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf | 75 | @[ -f server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf |
| 76 | 76 | ||
| 77 | server.p12: server.crt | 77 | server.p12: server.crt |
| @@ -85,7 +85,7 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 85 | chmod g+r server.pem | 85 | chmod g+r server.pem |
| 86 | 86 | ||
| 87 | .PHONY: server.vrfy | 87 | .PHONY: server.vrfy |
| 88 | @@ -113,18 +113,18 @@ server.vrfy: ca.pem | 88 | @@ -113,19 +113,19 @@ server.vrfy: ca.pem |
| 89 | # | 89 | # |
| 90 | ###################################################################### | 90 | ###################################################################### |
| 91 | client.csr client.key: client.cnf | 91 | client.csr client.key: client.cnf |
| @@ -93,13 +93,14 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 93 | + @[ -f client.csr ] || $(OPENSSL) req -new -out client.csr -keyout client.key -config ./client.cnf | 93 | + @[ -f client.csr ] || $(OPENSSL) req -new -out client.csr -keyout client.key -config ./client.cnf |
| 94 | chmod g+r client.key | 94 | chmod g+r client.key |
| 95 | 95 | ||
| 96 | client.crt: client.csr ca.pem ca.key | 96 | client.crt: ca.key ca.pem client.csr |
| 97 | @[ -f client.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf | 97 | @[ -f client.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf |
| 98 | 98 | ||
| 99 | client.p12: client.crt | 99 | client.p12: client.crt |
| 100 | - $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) | 100 | - $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) |
| 101 | + @[ -f client.p12 ] || $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) | 101 | + @[ -f client.p12 ] || $(OPENSSL) pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) |
| 102 | chmod g+r client.p12 | 102 | chmod g+r client.p12 |
| 103 | cp client.p12 $(USER_NAME).p12 | ||
| 103 | 104 | ||
| 104 | client.pem: client.p12 | 105 | client.pem: client.p12 |
| 105 | - $(OPENSSL) pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) | 106 | - $(OPENSSL) pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT) |
| @@ -107,7 +108,7 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 107 | chmod g+r client.pem | 108 | chmod g+r client.pem |
| 108 | cp client.pem $(USER_NAME).pem | 109 | cp client.pem $(USER_NAME).pem |
| 109 | 110 | ||
| 110 | @@ -139,18 +139,18 @@ client.vrfy: ca.pem client.pem | 111 | @@ -140,18 +140,18 @@ client.vrfy: ca.pem client.pem |
| 111 | # | 112 | # |
| 112 | ###################################################################### | 113 | ###################################################################### |
| 113 | inner-server.csr inner-server.key: inner-server.cnf | 114 | inner-server.csr inner-server.key: inner-server.cnf |
| @@ -115,7 +116,7 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 115 | + @[ -f inner-server.csr] || $(OPENSSL) req -new -out inner-server.csr -keyout inner-server.key -config ./inner-server.cnf | 116 | + @[ -f inner-server.csr] || $(OPENSSL) req -new -out inner-server.csr -keyout inner-server.key -config ./inner-server.cnf |
| 116 | chmod g+r inner-server.key | 117 | chmod g+r inner-server.key |
| 117 | 118 | ||
| 118 | inner-server.crt: inner-server.csr ca.key ca.pem | 119 | inner-server.crt: ca.key ca.pem inner-server.csr |
| 119 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in inner-server.csr -key $(PASSWORD_CA) -out inner-server.crt -extensions xpserver_ext -extfile xpextensions -config ./inner-server.cnf | 120 | - $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in inner-server.csr -key $(PASSWORD_CA) -out inner-server.crt -extensions xpserver_ext -extfile xpextensions -config ./inner-server.cnf |
| 120 | + @[ -f inner-server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in inner-server.csr -key $(PASSWORD_CA) -out inner-server.crt -extensions xpserver_ext -extfile xpextensions -config ./inner-server.cnf | 121 | + @[ -f inner-server.crt ] || $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in inner-server.csr -key $(PASSWORD_CA) -out inner-server.crt -extensions xpserver_ext -extfile xpextensions -config ./inner-server.cnf |
| 121 | 122 | ||
| @@ -131,5 +132,5 @@ index 77eec9baa1..3dcb63fe71 100644 | |||
| 131 | 132 | ||
| 132 | .PHONY: inner-server.vrfy | 133 | .PHONY: inner-server.vrfy |
| 133 | -- | 134 | -- |
| 134 | 2.26.2 | 135 | 2.25.1 |
| 135 | 136 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-workaround-error-with-autoconf-2.7.patch b/meta-networking/recipes-connectivity/freeradius/files/0014-Workaround-error-with-autoconf-2.7.patch index 80c571df98..17eadc7e59 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/0001-workaround-error-with-autoconf-2.7.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0014-Workaround-error-with-autoconf-2.7.patch | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | From 3b4ba29c7c5800df87eecd65214244619e01162b Mon Sep 17 00:00:00 2001 | 1 | From c591da4a361496eec93625cf8c4f89bddfedaca7 Mon Sep 17 00:00:00 2001 |
| 2 | From: Hongxu Jia <hongxu.jia@windriver.com> | 2 | From: Hongxu Jia <hongxu.jia@windriver.com> |
| 3 | Date: Sun, 7 Feb 2021 16:02:36 +0800 | 3 | Date: Sun, 7 Feb 2021 16:02:36 +0800 |
| 4 | Subject: [PATCH] workaround error with autoconf 2.7 | 4 | Subject: [PATCH] Workaround error with autoconf 2.7 |
| 5 | 5 | ||
| 6 | While using autoconf 2.7, the AM_MISSING_PROG caused unexpected error: | 6 | While using autoconf 2.7, the AM_MISSING_PROG caused unexpected error: |
| 7 | ... | 7 | ... |
| @@ -11,7 +11,7 @@ configure.ac: error: required file 'missing' not found | |||
| 11 | Since these tools were explicitly added by autotools bbclass, | 11 | Since these tools were explicitly added by autotools bbclass, |
| 12 | remove the testing to workaround the error with autoconf 2.7 | 12 | remove the testing to workaround the error with autoconf 2.7 |
| 13 | 13 | ||
| 14 | Upstream-Status: Inappropriate [oe specific] | 14 | Upstream-Status: Inappropriate [embedded specific] |
| 15 | 15 | ||
| 16 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | 16 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> |
| 17 | --- | 17 | --- |
| @@ -19,10 +19,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | |||
| 19 | 1 file changed, 8 deletions(-) | 19 | 1 file changed, 8 deletions(-) |
| 20 | 20 | ||
| 21 | diff --git a/configure.ac b/configure.ac | 21 | diff --git a/configure.ac b/configure.ac |
| 22 | index 609efb104b..2d761cf62c 100644 | 22 | index 263098f7fd..fc296832d8 100644 |
| 23 | --- a/configure.ac | 23 | --- a/configure.ac |
| 24 | +++ b/configure.ac | 24 | +++ b/configure.ac |
| 25 | @@ -693,14 +693,6 @@ fi | 25 | @@ -878,14 +878,6 @@ fi |
| 26 | 26 | ||
| 27 | AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers) | 27 | AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers) |
| 28 | 28 | ||
| @@ -34,9 +34,9 @@ index 609efb104b..2d761cf62c 100644 | |||
| 34 | -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) | 34 | -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) |
| 35 | -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) | 35 | -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) |
| 36 | - | 36 | - |
| 37 | AC_PATH_PROG(LOCATE,locate) | ||
| 38 | AC_PATH_PROG(DIRNAME,dirname) | 37 | AC_PATH_PROG(DIRNAME,dirname) |
| 39 | AC_PATH_PROG(GREP,grep) | 38 | AC_PATH_PROG(GREP,grep) |
| 39 | |||
| 40 | -- | 40 | -- |
| 41 | 2.27.0 | 41 | 2.25.1 |
| 42 | 42 | ||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/check-openssl-cmds-in-script-bootstrap.patch b/meta-networking/recipes-connectivity/freeradius/files/0015-bootstrap-check-commands-of-openssl-exist.patch index fcadae93a0..d1d0111607 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/check-openssl-cmds-in-script-bootstrap.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0015-bootstrap-check-commands-of-openssl-exist.patch | |||
| @@ -1,4 +1,7 @@ | |||
| 1 | bootstrap: check commands of openssl exist | 1 | From 78494ea005bd38324953b05176d6eb2c3f55af2c Mon Sep 17 00:00:00 2001 |
| 2 | From: Kai Kang <kai.kang@windriver.com> | ||
| 3 | Date: Sun, 8 Jan 2023 23:21:24 +0800 | ||
| 4 | Subject: [PATCH] bootstrap: check commands of openssl exist | ||
| 2 | 5 | ||
| 3 | It calls openssl commands dhparam and pkcs12 in script bootstrap. These | 6 | It calls openssl commands dhparam and pkcs12 in script bootstrap. These |
| 4 | commands are configurable based on configure options 'no-dh' and | 7 | commands are configurable based on configure options 'no-dh' and |
| @@ -18,7 +21,7 @@ Signed-off-by: Kai Kang <kai.kang@windriver.com> | |||
| 18 | 1 file changed, 8 insertions(+) | 21 | 1 file changed, 8 insertions(+) |
| 19 | 22 | ||
| 20 | diff --git a/raddb/certs/bootstrap b/raddb/certs/bootstrap | 23 | diff --git a/raddb/certs/bootstrap b/raddb/certs/bootstrap |
| 21 | index 0f719aafd4..17feddbeeb 100755 | 24 | index 57de8cf0d7..4641c71700 100755 |
| 22 | --- a/raddb/certs/bootstrap | 25 | --- a/raddb/certs/bootstrap |
| 23 | +++ b/raddb/certs/bootstrap | 26 | +++ b/raddb/certs/bootstrap |
| 24 | @@ -13,6 +13,14 @@ | 27 | @@ -13,6 +13,14 @@ |
| @@ -36,3 +39,6 @@ index 0f719aafd4..17feddbeeb 100755 | |||
| 36 | make -h > /dev/null 2>&1 | 39 | make -h > /dev/null 2>&1 |
| 37 | 40 | ||
| 38 | # | 41 | # |
| 42 | -- | ||
| 43 | 2.25.1 | ||
| 44 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/0001-version.c-don-t-print-build-flags.patch b/meta-networking/recipes-connectivity/freeradius/files/0016-version.c-don-t-print-build-flags.patch index 697205efe0..2d67fdef05 100644 --- a/meta-networking/recipes-connectivity/freeradius/files/0001-version.c-don-t-print-build-flags.patch +++ b/meta-networking/recipes-connectivity/freeradius/files/0016-version.c-don-t-print-build-flags.patch | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | From cbc64dcf6aa2a1be63f45ea6dd7d2c49b70a0bee Mon Sep 17 00:00:00 2001 | 1 | From cbbb62ddda5c189c225f96bf6b599b3b3e8c8252 Mon Sep 17 00:00:00 2001 |
| 2 | From: Mingli Yu <mingli.yu@windriver.com> | 2 | From: Mingli Yu <mingli.yu@windriver.com> |
| 3 | Date: Wed, 3 Aug 2022 16:44:29 +0800 | 3 | Date: Wed, 3 Aug 2022 16:44:29 +0800 |
| 4 | Subject: [PATCH] version.c: don't print build flags | 4 | Subject: [PATCH] version.c: don't print build flags |
| 5 | 5 | ||
| 6 | Don't print the build flags to avoid collecting the build environment info. | 6 | Don't print the build flags to avoid collecting the build environment info. |
| 7 | 7 | ||
| 8 | Upstream-Status: Inappropriate [oe specific] | 8 | Upstream-Status: Inappropriate [embedded specific] |
| 9 | 9 | ||
| 10 | Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | 10 | Signed-off-by: Mingli Yu <mingli.yu@windriver.com> |
| 11 | --- | 11 | --- |
| @@ -13,7 +13,7 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | |||
| 13 | 1 file changed, 13 deletions(-) | 13 | 1 file changed, 13 deletions(-) |
| 14 | 14 | ||
| 15 | diff --git a/src/main/version.c b/src/main/version.c | 15 | diff --git a/src/main/version.c b/src/main/version.c |
| 16 | index 62972d9f53..cf81de72c9 100644 | 16 | index f1f1e87810..3ffcbb25a0 100644 |
| 17 | --- a/src/main/version.c | 17 | --- a/src/main/version.c |
| 18 | +++ b/src/main/version.c | 18 | +++ b/src/main/version.c |
| 19 | @@ -589,19 +589,6 @@ void version_print(void) | 19 | @@ -589,19 +589,6 @@ void version_print(void) |
diff --git a/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41860.patch b/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41860.patch deleted file mode 100644 index 4ea519c752..0000000000 --- a/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41860.patch +++ /dev/null | |||
| @@ -1,118 +0,0 @@ | |||
| 1 | From f1cdbb33ec61c4a64a32e107d4d02f936051c708 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: "Alan T. DeKok" <aland@freeradius.org> | ||
| 3 | Date: Mon, 7 Feb 2022 22:26:05 -0500 | ||
| 4 | Subject: [PATCH] it's probably wrong to be completely retarded. Let's fix | ||
| 5 | that. | ||
| 6 | |||
| 7 | CVE: CVE-2022-41860 | ||
| 8 | |||
| 9 | Upstream-Status: Backport | ||
| 10 | [https://github.com/FreeRADIUS/freeradius-server/commit/f1cdbb33ec61c4a64a32e107d4d02f936051c708] | ||
| 11 | |||
| 12 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | ||
| 13 | --- | ||
| 14 | src/modules/rlm_eap/libeap/eapsimlib.c | 69 +++++++++++++++++++------- | ||
| 15 | 1 file changed, 52 insertions(+), 17 deletions(-) | ||
| 16 | |||
| 17 | diff --git a/src/modules/rlm_eap/libeap/eapsimlib.c b/src/modules/rlm_eap/libeap/eapsimlib.c | ||
| 18 | index cf1e8a7dd9..e438a844ea 100644 | ||
| 19 | --- a/src/modules/rlm_eap/libeap/eapsimlib.c | ||
| 20 | +++ b/src/modules/rlm_eap/libeap/eapsimlib.c | ||
| 21 | @@ -307,42 +307,77 @@ int unmap_eapsim_basictypes(RADIUS_PACKET *r, | ||
| 22 | newvp->vp_length = 1; | ||
| 23 | fr_pair_add(&(r->vps), newvp); | ||
| 24 | |||
| 25 | + /* | ||
| 26 | + * EAP-SIM has a 1 octet of subtype, and 2 octets | ||
| 27 | + * reserved. | ||
| 28 | + */ | ||
| 29 | attr += 3; | ||
| 30 | attrlen -= 3; | ||
| 31 | |||
| 32 | - /* now, loop processing each attribute that we find */ | ||
| 33 | - while(attrlen > 0) { | ||
| 34 | + /* | ||
| 35 | + * Loop over each attribute. The format is: | ||
| 36 | + * | ||
| 37 | + * 1 octet of type | ||
| 38 | + * 1 octet of length (value 1..255) | ||
| 39 | + * ((4 * length) - 2) octets of data. | ||
| 40 | + */ | ||
| 41 | + while (attrlen > 0) { | ||
| 42 | uint8_t *p; | ||
| 43 | |||
| 44 | - if(attrlen < 2) { | ||
| 45 | + if (attrlen < 2) { | ||
| 46 | fr_strerror_printf("EAP-Sim attribute %d too short: %d < 2", es_attribute_count, attrlen); | ||
| 47 | return 0; | ||
| 48 | } | ||
| 49 | |||
| 50 | + if (!attr[1]) { | ||
| 51 | + fr_strerror_printf("EAP-Sim attribute %d (no.%d) has no data", eapsim_attribute, | ||
| 52 | + es_attribute_count); | ||
| 53 | + return 0; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | eapsim_attribute = attr[0]; | ||
| 57 | eapsim_len = attr[1] * 4; | ||
| 58 | |||
| 59 | + /* | ||
| 60 | + * The length includes the 2-byte header. | ||
| 61 | + */ | ||
| 62 | if (eapsim_len > attrlen) { | ||
| 63 | fr_strerror_printf("EAP-Sim attribute %d (no.%d) has length longer than data (%d > %d)", | ||
| 64 | eapsim_attribute, es_attribute_count, eapsim_len, attrlen); | ||
| 65 | return 0; | ||
| 66 | } | ||
| 67 | |||
| 68 | - if(eapsim_len > MAX_STRING_LEN) { | ||
| 69 | - eapsim_len = MAX_STRING_LEN; | ||
| 70 | - } | ||
| 71 | - if (eapsim_len < 2) { | ||
| 72 | - fr_strerror_printf("EAP-Sim attribute %d (no.%d) has length too small", eapsim_attribute, | ||
| 73 | - es_attribute_count); | ||
| 74 | - return 0; | ||
| 75 | - } | ||
| 76 | + newvp = fr_pair_afrom_num(r, eapsim_attribute + PW_EAP_SIM_BASE, 0); | ||
| 77 | + if (!newvp) { | ||
| 78 | + /* | ||
| 79 | + * RFC 4186 Section 8.1 says 0..127 are | ||
| 80 | + * "non-skippable". If one such | ||
| 81 | + * attribute is found and we don't | ||
| 82 | + * understand it, the server has to send: | ||
| 83 | + * | ||
| 84 | + * EAP-Request/SIM/Notification packet with an | ||
| 85 | + * (AT_NOTIFICATION code, which implies general failure ("General | ||
| 86 | + * failure after authentication" (0), or "General failure" (16384), | ||
| 87 | + * depending on the phase of the exchange), which terminates the | ||
| 88 | + * authentication exchange. | ||
| 89 | + */ | ||
| 90 | + if (eapsim_attribute <= 127) { | ||
| 91 | + fr_strerror_printf("Unknown mandatory attribute %d, failing", | ||
| 92 | + eapsim_attribute); | ||
| 93 | + return 0; | ||
| 94 | + } | ||
| 95 | |||
| 96 | - newvp = fr_pair_afrom_num(r, eapsim_attribute+PW_EAP_SIM_BASE, 0); | ||
| 97 | - newvp->vp_length = eapsim_len-2; | ||
| 98 | - newvp->vp_octets = p = talloc_array(newvp, uint8_t, newvp->vp_length); | ||
| 99 | - memcpy(p, &attr[2], eapsim_len-2); | ||
| 100 | - fr_pair_add(&(r->vps), newvp); | ||
| 101 | - newvp = NULL; | ||
| 102 | + } else { | ||
| 103 | + /* | ||
| 104 | + * It's known, ccount for header, and | ||
| 105 | + * copy the value over. | ||
| 106 | + */ | ||
| 107 | + newvp->vp_length = eapsim_len - 2; | ||
| 108 | + | ||
| 109 | + newvp->vp_octets = p = talloc_array(newvp, uint8_t, newvp->vp_length); | ||
| 110 | + memcpy(p, &attr[2], newvp->vp_length); | ||
| 111 | + fr_pair_add(&(r->vps), newvp); | ||
| 112 | + } | ||
| 113 | |||
| 114 | /* advance pointers, decrement length */ | ||
| 115 | attr += eapsim_len; | ||
| 116 | -- | ||
| 117 | 2.25.1 | ||
| 118 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41861.patch b/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41861.patch deleted file mode 100644 index 352c02137a..0000000000 --- a/meta-networking/recipes-connectivity/freeradius/files/CVE-2022-41861.patch +++ /dev/null | |||
| @@ -1,53 +0,0 @@ | |||
| 1 | From 0ec2b39d260e08e4c3464f6b95005821dc559c62 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: "Alan T. DeKok" <aland@freeradius.org> | ||
| 3 | Date: Mon, 28 Feb 2022 10:34:15 -0500 | ||
| 4 | Subject: [PATCH] manual port of commit 5906bfa1 | ||
| 5 | |||
| 6 | CVE: CVE-2022-41861 | ||
| 7 | |||
| 8 | Upstream-Status: Backport | ||
| 9 | [https://github.com/FreeRADIUS/freeradius-server/commit/0ec2b39d260e08e4c3464f6b95005821dc559c62] | ||
| 10 | |||
| 11 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | ||
| 12 | --- | ||
| 13 | src/lib/filters.c | 12 +++++++++--- | ||
| 14 | 1 file changed, 9 insertions(+), 3 deletions(-) | ||
| 15 | |||
| 16 | diff --git a/src/lib/filters.c b/src/lib/filters.c | ||
| 17 | index 4868cd385d..3f3b63daee 100644 | ||
| 18 | --- a/src/lib/filters.c | ||
| 19 | +++ b/src/lib/filters.c | ||
| 20 | @@ -1205,13 +1205,19 @@ void print_abinary(char *out, size_t outlen, uint8_t const *data, size_t len, in | ||
| 21 | } | ||
| 22 | } | ||
| 23 | } else if (filter->type == RAD_FILTER_GENERIC) { | ||
| 24 | - int count; | ||
| 25 | + size_t count, masklen; | ||
| 26 | + | ||
| 27 | + masklen = ntohs(filter->u.generic.len); | ||
| 28 | + if (masklen >= sizeof(filter->u.generic.mask)) { | ||
| 29 | + *p = '\0'; | ||
| 30 | + return; | ||
| 31 | + } | ||
| 32 | |||
| 33 | i = snprintf(p, outlen, " %u ", (unsigned int) ntohs(filter->u.generic.offset)); | ||
| 34 | p += i; | ||
| 35 | |||
| 36 | /* show the mask */ | ||
| 37 | - for (count = 0; count < ntohs(filter->u.generic.len); count++) { | ||
| 38 | + for (count = 0; count < masklen; count++) { | ||
| 39 | i = snprintf(p, outlen, "%02x", filter->u.generic.mask[count]); | ||
| 40 | p += i; | ||
| 41 | outlen -= i; | ||
| 42 | @@ -1222,7 +1228,7 @@ void print_abinary(char *out, size_t outlen, uint8_t const *data, size_t len, in | ||
| 43 | outlen--; | ||
| 44 | |||
| 45 | /* show the value */ | ||
| 46 | - for (count = 0; count < ntohs(filter->u.generic.len); count++) { | ||
| 47 | + for (count = 0; count < masklen; count++) { | ||
| 48 | i = snprintf(p, outlen, "%02x", filter->u.generic.value[count]); | ||
| 49 | p += i; | ||
| 50 | outlen -= i; | ||
| 51 | -- | ||
| 52 | 2.25.1 | ||
| 53 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/files/CVE-2024-3596.patch b/meta-networking/recipes-connectivity/freeradius/files/CVE-2024-3596.patch deleted file mode 100644 index 1778e8e927..0000000000 --- a/meta-networking/recipes-connectivity/freeradius/files/CVE-2024-3596.patch +++ /dev/null | |||
| @@ -1,1506 +0,0 @@ | |||
| 1 | From 441967ba1d1ec28aa9582ab0253ad01e14b42148 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Arran Cudbard-Bell <a.cudbardb@freeradius.org> | ||
| 3 | Date: Sun, 30 Jun 2024 14:03:17 -0600 | ||
| 4 | Subject: [PATCH] CVE-2024-3596: Backport fix for BlastRADIUS | ||
| 5 | |||
| 6 | Upstream-Status: Backport from v3.0.x branch, commit range 3a00a6ecc188629b0441fd45ad61ca8986de156e..da643f1edc267ce95260dc36069e6f1a7a4d66f8 | ||
| 7 | CVE: CVE-2024-3596 | ||
| 8 | |||
| 9 | Signed-off-by: Rohini Sangam <rsangam@mvista.com> | ||
| 10 | --- | ||
| 11 | man/man1/radclient.1 | 10 ++- | ||
| 12 | man/man1/radtest.1 | 11 ++- | ||
| 13 | raddb/clients.conf | 47 ++++++++-- | ||
| 14 | raddb/proxy.conf | 19 +++++ | ||
| 15 | raddb/radiusd.conf.in | 185 ++++++++++++++++++++++++++++++++++++++++ | ||
| 16 | src/include/clients.h | 6 +- | ||
| 17 | src/include/conffile.h | 1 + | ||
| 18 | src/include/libradius.h | 19 ++++- | ||
| 19 | src/include/radius.h | 1 + | ||
| 20 | src/include/radiusd.h | 6 ++ | ||
| 21 | src/include/realms.h | 1 + | ||
| 22 | src/lib/radius.c | 87 +++++++++++++++++-- | ||
| 23 | src/main/client.c | 45 ++++++++-- | ||
| 24 | src/main/conffile.c | 4 +- | ||
| 25 | src/main/listen.c | 141 +++++++++++++++++++++++++++++- | ||
| 26 | src/main/mainconfig.c | 70 +++++++++++++++ | ||
| 27 | src/main/process.c | 65 ++++++++++++++ | ||
| 28 | src/main/radclient.c | 147 ++++++++++++++++++++++++++++++- | ||
| 29 | src/main/radtest.in | 6 +- | ||
| 30 | src/main/realms.c | 11 +++ | ||
| 31 | src/main/tls_listen.c | 5 ++ | ||
| 32 | 21 files changed, 855 insertions(+), 32 deletions(-) | ||
| 33 | |||
| 34 | diff --git a/man/man1/radclient.1 b/man/man1/radclient.1 | ||
| 35 | index 229dcae0c7..b83bee931a 100644 | ||
| 36 | --- a/man/man1/radclient.1 | ||
| 37 | +++ b/man/man1/radclient.1 | ||
| 38 | @@ -1,10 +1,11 @@ | ||
| 39 | -.TH RADCLIENT 1 "22 March 2019" "" "FreeRADIUS Daemon" | ||
| 40 | +.TH RADCLIENT 1 "21 May 2024" "" "FreeRADIUS Daemon" | ||
| 41 | .SH NAME | ||
| 42 | radclient - send packets to a RADIUS server, show reply | ||
| 43 | .SH SYNOPSIS | ||
| 44 | .B radclient | ||
| 45 | .RB [ \-4 ] | ||
| 46 | .RB [ \-6 ] | ||
| 47 | +.RB [ \-b ] | ||
| 48 | .RB [ \-c | ||
| 49 | .IR count ] | ||
| 50 | .RB [ \-d | ||
| 51 | @@ -52,6 +53,13 @@ automatically encrypted before the packet is sent to the server. | ||
| 52 | Use IPv4 (default) | ||
| 53 | .IP \-6 | ||
| 54 | Use IPv6 | ||
| 55 | +.IP \-b | ||
| 56 | +Enforce the Blast RADIUS checks. All replies to an Access-Request packet | ||
| 57 | +must contain a Message-Authenticator as the first attribute. | ||
| 58 | + | ||
| 59 | +For compatibility with old servers, this flag is not set by default. | ||
| 60 | +However, radclient still checks for the Blast RADIUS signature, and | ||
| 61 | +discards packets which match the attack. | ||
| 62 | .IP \-c\ \fIcount\fP | ||
| 63 | Send each packet \fIcount\fP times. | ||
| 64 | .IP \-d\ \fIraddb_directory\fP | ||
| 65 | diff --git a/man/man1/radtest.1 b/man/man1/radtest.1 | ||
| 66 | index b3184779c0..6bfab75944 100644 | ||
| 67 | --- a/man/man1/radtest.1 | ||
| 68 | +++ b/man/man1/radtest.1 | ||
| 69 | @@ -1,4 +1,4 @@ | ||
| 70 | -.TH RADTEST 1 "5 April 2010" "" "FreeRADIUS Daemon" | ||
| 71 | +.TH RADTEST 1 "21 May 2024" "" "FreeRADIUS Daemon" | ||
| 72 | .SH NAME | ||
| 73 | radtest - send packets to a RADIUS server, show reply | ||
| 74 | .SH SYNOPSIS | ||
| 75 | @@ -15,6 +15,8 @@ radtest - send packets to a RADIUS server, show reply | ||
| 76 | .IR ] | ||
| 77 | .RB [ \-6 | ||
| 78 | .IR ] | ||
| 79 | +.RB [ \-b | ||
| 80 | +.IR | ||
| 81 | .I user password radius-server nas-port-number secret | ||
| 82 | .RB [ ppphint ] | ||
| 83 | .RB [ nasname ] | ||
| 84 | @@ -26,6 +28,13 @@ way to test a radius server. | ||
| 85 | |||
| 86 | .SH OPTIONS | ||
| 87 | |||
| 88 | +.IP \-b | ||
| 89 | +Enforce the Blast RADIUS checks. All replies to an Access-Request packet | ||
| 90 | +must contain a Message-Authenticator as the first attribute. | ||
| 91 | + | ||
| 92 | +For compatibility with old servers, this flag is not set by default. | ||
| 93 | +However, radclient still checks for the Blast RADIUS signature, and | ||
| 94 | +discards packets which match the attack. | ||
| 95 | .IP "\-d \fIraddb_directory\fP" | ||
| 96 | The directory that contains the RADIUS dictionary files. Defaults to | ||
| 97 | \fI/etc/raddb\fP. | ||
| 98 | diff --git a/raddb/clients.conf b/raddb/clients.conf | ||
| 99 | index 76b300d3c5..d55414b7d2 100644 | ||
| 100 | --- a/raddb/clients.conf | ||
| 101 | +++ b/raddb/clients.conf | ||
| 102 | @@ -100,15 +100,44 @@ client localhost { | ||
| 103 | secret = testing123 | ||
| 104 | |||
| 105 | # | ||
| 106 | - # Old-style clients do not send a Message-Authenticator | ||
| 107 | - # in an Access-Request. RFC 5080 suggests that all clients | ||
| 108 | - # SHOULD include it in an Access-Request. The configuration | ||
| 109 | - # item below allows the server to require it. If a client | ||
| 110 | - # is required to include a Message-Authenticator and it does | ||
| 111 | - # not, then the packet will be silently discarded. | ||
| 112 | - # | ||
| 113 | - # allowed values: yes, no | ||
| 114 | - require_message_authenticator = no | ||
| 115 | + # The global configuration "security.require_message_authenticator" | ||
| 116 | + # flag sets the default for all clients. That default can be | ||
| 117 | + # over-ridden here, by setting it to a value. If no value is set, | ||
| 118 | + # then the default from the "radiusd.conf" file is used. | ||
| 119 | + # | ||
| 120 | + # See that file for full documentation on the flag, along | ||
| 121 | + # with allowed values and meanings. | ||
| 122 | + # | ||
| 123 | + # This flag exists solely for legacy clients which do not send | ||
| 124 | + # Message-Authenticator in all Access-Request packets. We do not | ||
| 125 | + # recommend setting it to "no". | ||
| 126 | + # | ||
| 127 | + # The number one way to protect yourself from the BlastRADIUS | ||
| 128 | + # attack is to update all RADIUS servers, and then set this | ||
| 129 | + # flag to "yes". If all RADIUS servers are updated, and if | ||
| 130 | + # all of them have this flag set to "yes" for all clients, | ||
| 131 | + # then your network is safe. You can then upgrade the | ||
| 132 | + # clients when it is convenient, instead of rushing the | ||
| 133 | + # upgrades. | ||
| 134 | + # | ||
| 135 | + # allowed values: yes, no, auto | ||
| 136 | +# require_message_authenticator = no | ||
| 137 | + | ||
| 138 | + # | ||
| 139 | + # The global configuration "security.limit_proxy_state" | ||
| 140 | + # flag sets the default for all clients. That default can be | ||
| 141 | + # over-ridden here, by setting it to "no". | ||
| 142 | + # | ||
| 143 | + # See that file for full documentation on the flag, along | ||
| 144 | + # with allowed values,and meanings. | ||
| 145 | + # | ||
| 146 | + # This flag exists solely for legacy clients which do not send | ||
| 147 | + # Message-Authenticator in all Access-Request packets. We do not | ||
| 148 | + # recommend setting it to "no". | ||
| 149 | + # | ||
| 150 | + # allowed values: yes, no, auto | ||
| 151 | + # | ||
| 152 | +# limit_proxy_state = yes | ||
| 153 | |||
| 154 | # | ||
| 155 | # The short name is used as an alias for the fully qualified | ||
| 156 | diff --git a/raddb/proxy.conf b/raddb/proxy.conf | ||
| 157 | index 91b4b37930..fa362b8a74 100644 | ||
| 158 | --- a/raddb/proxy.conf | ||
| 159 | +++ b/raddb/proxy.conf | ||
| 160 | @@ -204,6 +204,25 @@ home_server localhost { | ||
| 161 | # | ||
| 162 | secret = testing123 | ||
| 163 | |||
| 164 | + | ||
| 165 | + # | ||
| 166 | + # The global configuration "security.require_message_authenticator" | ||
| 167 | + # flag sets the default for all home servers. That default can be | ||
| 168 | + # over-ridden here, by setting it to a value. If no value is set, | ||
| 169 | + # then the default from the "radiusd.conf" file is used. | ||
| 170 | + # | ||
| 171 | + # See that file for full documentation on the flag, along | ||
| 172 | + # with allowed values and meanings. | ||
| 173 | + # | ||
| 174 | + # This flag exists solely for legacy home servers which do | ||
| 175 | + # not send Message-Authenticator in all Access-Accept, | ||
| 176 | + # Access-Reject, or Access-Challenge packets. We do not | ||
| 177 | + # recommend setting it to "no". | ||
| 178 | + # | ||
| 179 | + # allowed values: yes, no, auto | ||
| 180 | + # | ||
| 181 | +# require_message_authenticator = no | ||
| 182 | + | ||
| 183 | ############################################################ | ||
| 184 | # | ||
| 185 | # The rest of the configuration items listed here are optional, | ||
| 186 | diff --git a/raddb/radiusd.conf.in b/raddb/radiusd.conf.in | ||
| 187 | index e8aee3c001..5b8800bfc8 100644 | ||
| 188 | --- a/raddb/radiusd.conf.in | ||
| 189 | +++ b/raddb/radiusd.conf.in | ||
| 190 | @@ -564,6 +564,191 @@ security { | ||
| 191 | # | ||
| 192 | status_server = yes | ||
| 193 | |||
| 194 | + # | ||
| 195 | + # Global configuration for requiring Message-Authenticator in | ||
| 196 | + # all Access-* packets sent over UDP or TCP. This flag is | ||
| 197 | + # ignored for TLS. | ||
| 198 | + # | ||
| 199 | + # The number one way to protect yourself from the BlastRADIUS | ||
| 200 | + # attack is to update all RADIUS servers, and then set this | ||
| 201 | + # flag to "yes". If all RADIUS servers are updated, and if | ||
| 202 | + # all of them have this flag set to "yes" for all clients, | ||
| 203 | + # then your network is safe. You can then upgrade the | ||
| 204 | + # clients when it is convenient, instead of rushing the | ||
| 205 | + # upgrades. | ||
| 206 | + # | ||
| 207 | + # This flag sets the global default for all clients and home | ||
| 208 | + # servers. It can be over-ridden in an individual client or | ||
| 209 | + # home_server definition by adding the same flag to that | ||
| 210 | + # section with an appropriate value. | ||
| 211 | + # | ||
| 212 | + # All upgraded RADIUS implementations should send | ||
| 213 | + # Message-Authenticator in all Access-Request, Access-Accept, | ||
| 214 | + # Access-Reject, and Access-Challenge packets. Once all | ||
| 215 | + # systems are upgraded, setting this flag to "yes" is the | ||
| 216 | + # best protection from the attack. | ||
| 217 | + # | ||
| 218 | + # The possible values and meanings for | ||
| 219 | + # "require_message_authenticator" are; | ||
| 220 | + # | ||
| 221 | + # * "no" - allow Access-* packet which do not contain | ||
| 222 | + # Message-Authenticator | ||
| 223 | + # | ||
| 224 | + # For a client, if this flag is set to "no", then the | ||
| 225 | + # "limit_proxy_state" flag, below, is also checked. | ||
| 226 | + # | ||
| 227 | + # For a home_server, if this flag is set to "no", then the | ||
| 228 | + # Access-Accept, Access-Reject, and Access-Challenge | ||
| 229 | + # packets do not need to contain Message-Authenticator. | ||
| 230 | + # | ||
| 231 | + # The only reason to set this flag to "no" is when the | ||
| 232 | + # RADIUS client or home server has not been updated. It is | ||
| 233 | + # always safer to set this flag "no" in the individual | ||
| 234 | + # client or home_server definition. The global flag SHOULD | ||
| 235 | + # still be set to a safe value: "yes". | ||
| 236 | + # | ||
| 237 | + # WARNING: Setting this flag and the "limit_proxy_state" | ||
| 238 | + # flag to "no" will allow MITM attackers to create fake | ||
| 239 | + # Access-Accept packets to the NAS! At least one of them | ||
| 240 | + # MUST be set to "yes" for the system to have any | ||
| 241 | + # protection against the attack. | ||
| 242 | + # | ||
| 243 | + # * "yes" - Require that all Access-* packets (client and | ||
| 244 | + # home_server) contain Message-Authenticator. If a packet | ||
| 245 | + # does not contain Message-Authenticator, then it is | ||
| 246 | + # discarded. | ||
| 247 | + # | ||
| 248 | + # * "auto" - Automatically determine the value of the flag, | ||
| 249 | + # based on the first packet received from that client or | ||
| 250 | + # home_server. | ||
| 251 | + # | ||
| 252 | + # If the packet does not contain Message-Authenticator, | ||
| 253 | + # then the value of the flag is automatically switched to | ||
| 254 | + # "no". | ||
| 255 | + # | ||
| 256 | + # If the packet contains Message-Authenticator but not | ||
| 257 | + # EAP-Message, then the value of the flag is automatically | ||
| 258 | + # switched to "yes". The server has to check for | ||
| 259 | + # EAP-Message, because the previous RFCs require that the | ||
| 260 | + # packet contains Message-Authenticator when it also | ||
| 261 | + # contains EAP-Message. So having a Message-Authenticator | ||
| 262 | + # in those packets doesn't give the server enough | ||
| 263 | + # information to determined if the client or home_server | ||
| 264 | + # has been updated. | ||
| 265 | + # | ||
| 266 | + # If the packet contains Message-Authenticator and | ||
| 267 | + # EAP-Message, then the flag is left at the "auto" value. | ||
| 268 | + # | ||
| 269 | + # WARNING: This switch is done for the first packet | ||
| 270 | + # received from that client or home server. The change | ||
| 271 | + # does NOT persist across server restarts. You MUST change | ||
| 272 | + # the to "yes" manually, in order to make a permanent | ||
| 273 | + # change to the configuration. | ||
| 274 | + # | ||
| 275 | + # WARNING: If there are multiple NASes with the same source | ||
| 276 | + # IP and client definitions, BUT the NASes have different | ||
| 277 | + # behavior, then this flag WILL LIKELY BREAK YOUR NETWORK. | ||
| 278 | + # | ||
| 279 | + # That is, when there are multiple different RADIUS clients | ||
| 280 | + # behind one NATed IP address, then these security settings | ||
| 281 | + # have to be set to allow the MOST INSECURE packets to be | ||
| 282 | + # processed. This is a terrible idea, and will leave your | ||
| 283 | + # network vulnerable to the attack. Please upgrade all | ||
| 284 | + # clients immediately. | ||
| 285 | + # | ||
| 286 | + # The only solution to that rare configuration is to set | ||
| 287 | + # this flag to "no", in which case the network will work, | ||
| 288 | + # but will be vulnerable to the attack. | ||
| 289 | + # | ||
| 290 | + require_message_authenticator = auto | ||
| 291 | + | ||
| 292 | + # | ||
| 293 | + # Global configuration for limiting the combination of | ||
| 294 | + # Proxy-State and Message-Authenticator. This flag only | ||
| 295 | + # applies to packets sent over UDP or TCP. This flag is | ||
| 296 | + # ignored for TLS. | ||
| 297 | + # | ||
| 298 | + # This flag sets the global default for all clients. It can | ||
| 299 | + # be over-ridden in an individual client definition by adding | ||
| 300 | + # the same flag to that section with an appropriate value. | ||
| 301 | + # | ||
| 302 | + # If "require_message_authenticator" is set to "yes", this | ||
| 303 | + # configuration item is ignored. | ||
| 304 | + # | ||
| 305 | + # If "require_message_authenticator" is set to "no", this | ||
| 306 | + # configuration item is checked. | ||
| 307 | + # | ||
| 308 | + # The possible values and meanings for "limit_proxy_state" are; | ||
| 309 | + # | ||
| 310 | + # * "no" - allow any packets from the client, even packets | ||
| 311 | + # which contain the BlastRADIUS attack. Please be aware | ||
| 312 | + # that in this configuration the server will complain for | ||
| 313 | + # EVERY packet which it receives. | ||
| 314 | + # | ||
| 315 | + # The only reason to set this flag to "no" is when the | ||
| 316 | + # client is a proxy, AND the proxy does not send | ||
| 317 | + # Message-Authenticator in Access-Request packets. Even | ||
| 318 | + # then, the best approach to fix the issue is to (1) update | ||
| 319 | + # the proxy to send Message-Authenticator, and if that | ||
| 320 | + # can't be done, then (2) set this flag to "no", but ONLY | ||
| 321 | + # for that one client. The global flag SHOULD still be set | ||
| 322 | + # to a safe value: "yes". | ||
| 323 | + # | ||
| 324 | + # WARNING: Setting both this flag and the | ||
| 325 | + # "require_message_authenticator" flag to "no" will allow | ||
| 326 | + # MITM attackers to create fake Access-Accept packets to the | ||
| 327 | + # NAS! At least one of them MUST be set to "yes" for the | ||
| 328 | + # system to have any protection against the attack. | ||
| 329 | + # | ||
| 330 | + # * "yes" - Allow packets without Message-Authenticator, | ||
| 331 | + # but only when they do not contain Proxy-State. | ||
| 332 | + # packets which contain Proxy-State MUST also contain | ||
| 333 | + # Message-Authenticator, otherwise they are discarded. | ||
| 334 | + # | ||
| 335 | + # This setting is safe for most NASes, GGSNs, BRAS, etc. | ||
| 336 | + # Most regular RADIUS clients do not send Proxy-State | ||
| 337 | + # attributes for Access-Request packets that they originate. | ||
| 338 | + # However some aggregators (e.g. Wireless LAN Controllers) | ||
| 339 | + # may act as a RADIUS proxy for requests from their cohort | ||
| 340 | + # of managed devices, and in such cases will provide a | ||
| 341 | + # Proxy-State attribute. For those systems, you _must_ look | ||
| 342 | + # at the actual packets to determine what to do. It may be | ||
| 343 | + # that the only way to fix the vulnerability is to upgrade | ||
| 344 | + # the WLC, and set "require_message_authenticator" to "yes". | ||
| 345 | + # | ||
| 346 | + # * "auto" - Automatically determine the value of the flag, | ||
| 347 | + # based on the first packet received from that client. | ||
| 348 | + # | ||
| 349 | + # If the packet contains Proxy-State but no | ||
| 350 | + # Message-Authenticator, then the value of the flag is | ||
| 351 | + # automatically switched to "no". | ||
| 352 | + # | ||
| 353 | + # For all other situations, the value of the flag is | ||
| 354 | + # automatically switched to "yes". | ||
| 355 | + # | ||
| 356 | + # WARNING: This switch is done for the first packet | ||
| 357 | + # received from that client. The change does NOT persist | ||
| 358 | + # across server restarts. You MUST change the to "yes" | ||
| 359 | + # manually, in order to make a permanent change to the | ||
| 360 | + # configuration. | ||
| 361 | + # | ||
| 362 | + # WARNING: If there are multiple NASes with the same source | ||
| 363 | + # IP and client definitions, BUT the NASes have different | ||
| 364 | + # behavior, then this flag WILL LIKELY BREAK YOUR NETWORK. | ||
| 365 | + # | ||
| 366 | + # That is, when there are multiple different RADIUS clients | ||
| 367 | + # behind one NATed IP address, then these security settings | ||
| 368 | + # have to be set to allow the MOST INSECURE packets to be | ||
| 369 | + # processed. This is a terrible idea, and will leave your | ||
| 370 | + # network vulnerable to the attack. Please upgrade all | ||
| 371 | + # clients immediately. | ||
| 372 | + # | ||
| 373 | + # The only solution to that rare configuration is to set | ||
| 374 | + # this flag to "no", in which case the network will work, | ||
| 375 | + # but will be vulnerable to the attack. | ||
| 376 | + # | ||
| 377 | + limit_proxy_state = auto | ||
| 378 | + | ||
| 379 | @openssl_version_check_config@ | ||
| 380 | } | ||
| 381 | |||
| 382 | diff --git a/src/include/clients.h b/src/include/clients.h | ||
| 383 | index 560211557f..0aeb1da8d9 100644 | ||
| 384 | --- a/src/include/clients.h | ||
| 385 | +++ b/src/include/clients.h | ||
| 386 | @@ -39,7 +39,11 @@ typedef struct radclient { | ||
| 387 | |||
| 388 | char const *secret; //!< Secret PSK. | ||
| 389 | |||
| 390 | - bool message_authenticator; //!< Require RADIUS message authenticator in requests. | ||
| 391 | + fr_bool_auto_t require_ma; //!< Require RADIUS message authenticator in requests. | ||
| 392 | + | ||
| 393 | + bool dynamic_require_ma; //!< for dynamic clients | ||
| 394 | + | ||
| 395 | + fr_bool_auto_t limit_proxy_state; //!< Limit Proxy-State in requests | ||
| 396 | |||
| 397 | char const *nas_type; //!< Type of client (arbitrary). | ||
| 398 | |||
| 399 | diff --git a/src/include/conffile.h b/src/include/conffile.h | ||
| 400 | index 8cb045c946..ddbcae4e4f 100644 | ||
| 401 | --- a/src/include/conffile.h | ||
| 402 | +++ b/src/include/conffile.h | ||
| 403 | @@ -140,6 +140,7 @@ typedef struct timeval _timeval_t; | ||
| 404 | #define PW_TYPE_MULTI (1 << 18) //!< CONF_PAIR can have multiple copies. | ||
| 405 | #define PW_TYPE_NOT_EMPTY (1 << 19) //!< CONF_PAIR is required to have a non zero length value. | ||
| 406 | #define PW_TYPE_FILE_EXISTS ((1 << 20) | PW_TYPE_STRING) //!< File matching value must exist | ||
| 407 | +#define PW_TYPE_IGNORE_DEFAULT (1 << 21) //!< don't set from .dflt if the CONF_PAIR is missing | ||
| 408 | /* @} **/ | ||
| 409 | |||
| 410 | #define FR_INTEGER_COND_CHECK(_name, _var, _cond, _new)\ | ||
| 411 | diff --git a/src/include/libradius.h b/src/include/libradius.h | ||
| 412 | index ce2f713de1..2efef8b1d3 100644 | ||
| 413 | --- a/src/include/libradius.h | ||
| 414 | +++ b/src/include/libradius.h | ||
| 415 | @@ -402,6 +402,10 @@ typedef struct radius_packet { | ||
| 416 | size_t partial; | ||
| 417 | int proto; | ||
| 418 | #endif | ||
| 419 | + bool tls; //!< uses secure transport | ||
| 420 | + bool message_authenticator; | ||
| 421 | + bool proxy_state; | ||
| 422 | + bool eap_message; | ||
| 423 | } RADIUS_PACKET; | ||
| 424 | |||
| 425 | typedef enum { | ||
| 426 | @@ -507,6 +511,13 @@ DICT_VENDOR *dict_vendorbyvalue(int vendor); | ||
| 427 | /* radius.c */ | ||
| 428 | int rad_send(RADIUS_PACKET *, RADIUS_PACKET const *, char const *secret); | ||
| 429 | bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason); | ||
| 430 | + | ||
| 431 | +/* | ||
| 432 | + * 1 == require_ma | ||
| 433 | + * 2 == msg_peek | ||
| 434 | + * 4 == limit_proxy_state | ||
| 435 | + * 8 == require_ma for Access-* replies and Protocol-Error | ||
| 436 | + */ | ||
| 437 | RADIUS_PACKET *rad_recv(TALLOC_CTX *ctx, int fd, int flags); | ||
| 438 | ssize_t rad_recv_header(int sockfd, fr_ipaddr_t *src_ipaddr, uint16_t *src_port, int *code); | ||
| 439 | void rad_recv_discard(int sockfd); | ||
| 440 | @@ -694,7 +705,7 @@ extern bool fr_dns_lookups; /* do IP -> hostname lookups? */ | ||
| 441 | extern bool fr_hostname_lookups; /* do hostname -> IP lookups? */ | ||
| 442 | extern int fr_debug_lvl; /* 0 = no debugging information */ | ||
| 443 | extern uint32_t fr_max_attributes; /* per incoming packet */ | ||
| 444 | -#define FR_MAX_PACKET_CODE (52) | ||
| 445 | +#define FR_MAX_PACKET_CODE (53) | ||
| 446 | extern char const *fr_packet_codes[FR_MAX_PACKET_CODE]; | ||
| 447 | #define is_radius_code(_x) ((_x > 0) && (_x < FR_MAX_PACKET_CODE)) | ||
| 448 | extern FILE *fr_log_fp; | ||
| 449 | @@ -932,6 +943,12 @@ int fr_socket_wait_for_connect(int sockfd, struct timeval *timeout); | ||
| 450 | } | ||
| 451 | #endif | ||
| 452 | |||
| 453 | +typedef enum { | ||
| 454 | + FR_BOOL_FALSE = 0, | ||
| 455 | + FR_BOOL_TRUE, | ||
| 456 | + FR_BOOL_AUTO, | ||
| 457 | +} fr_bool_auto_t; | ||
| 458 | + | ||
| 459 | #include <freeradius-devel/packet.h> | ||
| 460 | |||
| 461 | #ifdef WITH_TCP | ||
| 462 | diff --git a/src/include/radius.h b/src/include/radius.h | ||
| 463 | index 473528d65d..147d674eed 100644 | ||
| 464 | --- a/src/include/radius.h | ||
| 465 | +++ b/src/include/radius.h | ||
| 466 | @@ -61,6 +61,7 @@ typedef enum { | ||
| 467 | PW_CODE_COA_REQUEST = 43, //!< RFC3575/RFC5176 - CoA-Request | ||
| 468 | PW_CODE_COA_ACK = 44, //!< RFC3575/RFC5176 - CoA-Ack (positive) | ||
| 469 | PW_CODE_COA_NAK = 45, //!< RFC3575/RFC5176 - CoA-Nak (not willing to perform) | ||
| 470 | + PW_CODE_PROTOCOL_ERROR = 52, //!< RFC7930 - Protocol layer issue | ||
| 471 | PW_CODE_MAX = 255, //!< Maximum possible code | ||
| 472 | } PW_CODE; | ||
| 473 | |||
| 474 | diff --git a/src/include/radiusd.h b/src/include/radiusd.h | ||
| 475 | index b2a0a0f642..e429c5be7a 100644 | ||
| 476 | --- a/src/include/radiusd.h | ||
| 477 | +++ b/src/include/radiusd.h | ||
| 478 | @@ -171,6 +171,10 @@ typedef struct main_config { | ||
| 479 | |||
| 480 | bool exiting; //!< are we exiting? | ||
| 481 | |||
| 482 | + fr_bool_auto_t require_ma; //!< global configuration for all clients and home servers | ||
| 483 | + | ||
| 484 | + fr_bool_auto_t limit_proxy_state; //!< global configuration for all clients | ||
| 485 | + | ||
| 486 | |||
| 487 | #ifdef ENABLE_OPENSSL_VERSION_CHECK | ||
| 488 | char const *allow_vulnerable_openssl; //!< The CVE number of the last security issue acknowledged. | ||
| 489 | @@ -558,6 +562,8 @@ int main_config_free(void); | ||
| 490 | void main_config_hup(void); | ||
| 491 | void hup_logfile(void); | ||
| 492 | |||
| 493 | +int fr_bool_auto_parse(CONF_PAIR *cp, fr_bool_auto_t *out, char const *str); | ||
| 494 | + | ||
| 495 | /* listen.c */ | ||
| 496 | void listen_free(rad_listen_t **head); | ||
| 497 | int listen_init(CONF_SECTION *cs, rad_listen_t **head, bool spawn_flag); | ||
| 498 | diff --git a/src/include/realms.h b/src/include/realms.h | ||
| 499 | index 6dae8b4f85..e643818e43 100644 | ||
| 500 | --- a/src/include/realms.h | ||
| 501 | +++ b/src/include/realms.h | ||
| 502 | @@ -59,6 +59,7 @@ typedef struct home_server { | ||
| 503 | //!< stats or when specifying home servers for a pool. | ||
| 504 | |||
| 505 | bool dual; //!< One of a pair of homeservers on consecutive ports. | ||
| 506 | + fr_bool_auto_t require_ma; //!< for all replies to Access-Request and Status-Server | ||
| 507 | char const *server; //!< For internal proxying | ||
| 508 | char const *parent_server; | ||
| 509 | |||
| 510 | diff --git a/src/lib/radius.c b/src/lib/radius.c | ||
| 511 | index 3881111f7d..7b91a4bde2 100644 | ||
| 512 | --- a/src/lib/radius.c | ||
| 513 | +++ b/src/lib/radius.c | ||
| 514 | @@ -142,8 +142,9 @@ char const *fr_packet_codes[FR_MAX_PACKET_CODE] = { | ||
| 515 | "47", | ||
| 516 | "48", | ||
| 517 | "49", | ||
| 518 | - "IP-Address-Allocate", | ||
| 519 | - "IP-Address-Release", //!< 50 | ||
| 520 | + "IP-Address-Allocate", //!< 50 | ||
| 521 | + "IP-Address-Release", | ||
| 522 | + "Protocol-Error", | ||
| 523 | }; | ||
| 524 | |||
| 525 | |||
| 526 | @@ -1700,6 +1701,15 @@ int rad_vp2attr(RADIUS_PACKET const *packet, RADIUS_PACKET const *original, | ||
| 527 | return rad_vp2vsa(packet, original, secret, pvp, start, room); | ||
| 528 | } | ||
| 529 | |||
| 530 | +static const bool code2ma[FR_MAX_PACKET_CODE] = { | ||
| 531 | + [ PW_CODE_ACCESS_REQUEST ] = true, | ||
| 532 | + [ PW_CODE_ACCESS_ACCEPT ] = true, | ||
| 533 | + [ PW_CODE_ACCESS_REJECT ] = true, | ||
| 534 | + [ PW_CODE_ACCESS_CHALLENGE ] = true, | ||
| 535 | + [ PW_CODE_STATUS_SERVER ] = true, | ||
| 536 | + [ PW_CODE_PROTOCOL_ERROR ] = true, | ||
| 537 | +}; | ||
| 538 | + | ||
| 539 | |||
| 540 | /** Encode a packet | ||
| 541 | * | ||
| 542 | @@ -1712,6 +1722,7 @@ int rad_encode(RADIUS_PACKET *packet, RADIUS_PACKET const *original, | ||
| 543 | uint16_t total_length; | ||
| 544 | int len; | ||
| 545 | VALUE_PAIR const *reply; | ||
| 546 | + bool seen_ma = false; | ||
| 547 | |||
| 548 | /* | ||
| 549 | * A 4K packet, aligned on 64-bits. | ||
| 550 | @@ -1775,6 +1786,27 @@ int rad_encode(RADIUS_PACKET *packet, RADIUS_PACKET const *original, | ||
| 551 | * memcpy. | ||
| 552 | */ | ||
| 553 | |||
| 554 | + /* | ||
| 555 | + * Always add Message-Authenticator for replies to | ||
| 556 | + * Access-Request packets, and for all Access-Accept, | ||
| 557 | + * Access-Reject, Access-Challenge. | ||
| 558 | + * | ||
| 559 | + * It must be the FIRST attribute in the packet. | ||
| 560 | + */ | ||
| 561 | + if (!packet->tls && | ||
| 562 | + ((code2ma[packet->code]) || (original && code2ma[original->code]))) { | ||
| 563 | + seen_ma = true; | ||
| 564 | + | ||
| 565 | + packet->offset = RADIUS_HDR_LEN; | ||
| 566 | + | ||
| 567 | + ptr[0] = PW_MESSAGE_AUTHENTICATOR; | ||
| 568 | + ptr[1] = 18; | ||
| 569 | + memset(ptr + 2, 0, 16); | ||
| 570 | + | ||
| 571 | + ptr += 18; | ||
| 572 | + total_length += 18; | ||
| 573 | + } | ||
| 574 | + | ||
| 575 | /* | ||
| 576 | * Loop over the reply attributes for the packet. | ||
| 577 | */ | ||
| 578 | @@ -1832,6 +1864,13 @@ int rad_encode(RADIUS_PACKET *packet, RADIUS_PACKET const *original, | ||
| 579 | * length and initial value. | ||
| 580 | */ | ||
| 581 | if (!reply->da->vendor && (reply->da->attr == PW_MESSAGE_AUTHENTICATOR)) { | ||
| 582 | + /* | ||
| 583 | + * We have already encoded the Message-Authenticator, don't do it again. | ||
| 584 | + */ | ||
| 585 | + if (seen_ma) { | ||
| 586 | + reply = reply->next; | ||
| 587 | + continue; | ||
| 588 | + } | ||
| 589 | if (room < 18) break; | ||
| 590 | |||
| 591 | /* | ||
| 592 | @@ -2323,6 +2362,8 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 593 | radius_packet_t *hdr; | ||
| 594 | char host_ipaddr[128]; | ||
| 595 | bool require_ma = false; | ||
| 596 | + bool limit_proxy_state = false; | ||
| 597 | + bool seen_proxy_state = false; | ||
| 598 | bool seen_ma = false; | ||
| 599 | uint32_t num_attributes; | ||
| 600 | decode_fail_t failure = DECODE_FAIL_NONE; | ||
| 601 | @@ -2371,15 +2412,26 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 602 | } | ||
| 603 | |||
| 604 | /* | ||
| 605 | - * Message-Authenticator is required in Status-Server | ||
| 606 | - * packets, otherwise they can be trivially forged. | ||
| 607 | + * If the caller requires Message-Authenticator, then set | ||
| 608 | + * the flag. | ||
| 609 | */ | ||
| 610 | - if (hdr->code == PW_CODE_STATUS_SERVER) require_ma = true; | ||
| 611 | |||
| 612 | /* | ||
| 613 | - * It's also required if the caller asks for it. | ||
| 614 | + * We also require Message-Authenticator if the packet | ||
| 615 | + * code is Status-Server. | ||
| 616 | + * | ||
| 617 | + * If we're receiving packets from a proxy socket, then | ||
| 618 | + * require Message-Authenticator for Access-* replies, | ||
| 619 | + * and for Protocol-Error. | ||
| 620 | */ | ||
| 621 | - if (flags) require_ma = true; | ||
| 622 | + require_ma = ((flags & 0x01) != 0) || (hdr->code == PW_CODE_STATUS_SERVER) || (((flags & 0x08) != 0) && code2ma[hdr->code]); | ||
| 623 | + | ||
| 624 | + /* | ||
| 625 | + * | ||
| 626 | + * We only limit Proxy-State if we're not requiring | ||
| 627 | + * Message-Authenticator. | ||
| 628 | + */ | ||
| 629 | + limit_proxy_state = ((flags & 0x04) != 0) && !require_ma; | ||
| 630 | |||
| 631 | /* | ||
| 632 | * Repeat the length checks. This time, instead of | ||
| 633 | @@ -2534,6 +2586,7 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 634 | case PW_EAP_MESSAGE: | ||
| 635 | require_ma = true; | ||
| 636 | eap = true; | ||
| 637 | + packet->eap_message = true; | ||
| 638 | break; | ||
| 639 | |||
| 640 | case PW_USER_PASSWORD: | ||
| 641 | @@ -2542,6 +2595,11 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 642 | non_eap = true; | ||
| 643 | break; | ||
| 644 | |||
| 645 | + case PW_PROXY_STATE: | ||
| 646 | + seen_proxy_state = true; | ||
| 647 | + packet->proxy_state = true; | ||
| 648 | + break; | ||
| 649 | + | ||
| 650 | case PW_MESSAGE_AUTHENTICATOR: | ||
| 651 | if (attr[1] != 2 + AUTH_VECTOR_LEN) { | ||
| 652 | FR_DEBUG_STRERROR_PRINTF("Malformed RADIUS packet from host %s: Message-Authenticator has invalid length %d", | ||
| 653 | @@ -2553,6 +2611,7 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 654 | goto finish; | ||
| 655 | } | ||
| 656 | seen_ma = true; | ||
| 657 | + packet->message_authenticator = true; | ||
| 658 | break; | ||
| 659 | } | ||
| 660 | |||
| 661 | @@ -2609,7 +2668,19 @@ bool rad_packet_ok(RADIUS_PACKET *packet, int flags, decode_fail_t *reason) | ||
| 662 | * Message-Authenticator attributes. | ||
| 663 | */ | ||
| 664 | if (require_ma && !seen_ma) { | ||
| 665 | - FR_DEBUG_STRERROR_PRINTF("Insecure packet from host %s: Packet does not contain required Message-Authenticator attribute", | ||
| 666 | + FR_DEBUG_STRERROR_PRINTF("Insecure packet from host %s: Packet does not contain required Message-Authenticator attribute. You may need to set \"require_message_authenticator = no\" in the configuration.", | ||
| 667 | + inet_ntop(packet->src_ipaddr.af, | ||
| 668 | + &packet->src_ipaddr.ipaddr, | ||
| 669 | + host_ipaddr, sizeof(host_ipaddr))); | ||
| 670 | + failure = DECODE_FAIL_MA_MISSING; | ||
| 671 | + goto finish; | ||
| 672 | + } | ||
| 673 | + | ||
| 674 | + /* | ||
| 675 | + * The client is a NAS which shouldn't send Proxy-State, but it did! | ||
| 676 | + */ | ||
| 677 | + if (limit_proxy_state && seen_proxy_state && !seen_ma) { | ||
| 678 | + FR_DEBUG_STRERROR_PRINTF("Insecure packet from host %s: Packet does not contain required Message-Authenticator attribute, but still has one or more Proxy-State attributes", | ||
| 679 | inet_ntop(packet->src_ipaddr.af, | ||
| 680 | &packet->src_ipaddr.ipaddr, | ||
| 681 | host_ipaddr, sizeof(host_ipaddr))); | ||
| 682 | diff --git a/src/main/client.c b/src/main/client.c | ||
| 683 | index 6228438c47..875dc37d60 100644 | ||
| 684 | --- a/src/main/client.c | ||
| 685 | +++ b/src/main/client.c | ||
| 686 | @@ -283,7 +283,8 @@ bool client_add(RADCLIENT_LIST *clients, RADCLIENT *client) | ||
| 687 | (old->coa_server == client->coa_server) && | ||
| 688 | (old->coa_pool == client->coa_pool) && | ||
| 689 | #endif | ||
| 690 | - (old->message_authenticator == client->message_authenticator)) { | ||
| 691 | + (old->require_ma == client->require_ma) && | ||
| 692 | + (old->limit_proxy_state == client->limit_proxy_state)) { | ||
| 693 | WARN("Ignoring duplicate client %s", client->longname); | ||
| 694 | client_free(client); | ||
| 695 | return true; | ||
| 696 | @@ -445,6 +446,8 @@ static fr_ipaddr_t cl_ipaddr; | ||
| 697 | static uint32_t cl_netmask; | ||
| 698 | static char const *cl_srcipaddr = NULL; | ||
| 699 | static char const *hs_proto = NULL; | ||
| 700 | +static char const *require_message_authenticator = NULL; | ||
| 701 | +static char const *limit_proxy_state = NULL; | ||
| 702 | |||
| 703 | #ifdef WITH_TCP | ||
| 704 | static CONF_PARSER limit_config[] = { | ||
| 705 | @@ -467,7 +470,8 @@ static const CONF_PARSER client_config[] = { | ||
| 706 | |||
| 707 | { "src_ipaddr", FR_CONF_POINTER(PW_TYPE_STRING, &cl_srcipaddr), NULL }, | ||
| 708 | |||
| 709 | - { "require_message_authenticator", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, RADCLIENT, message_authenticator), "no" }, | ||
| 710 | + { "require_message_authenticator", FR_CONF_POINTER(PW_TYPE_STRING| PW_TYPE_IGNORE_DEFAULT, &require_message_authenticator), NULL }, | ||
| 711 | + { "limit_proxy_state", FR_CONF_POINTER(PW_TYPE_STRING| PW_TYPE_IGNORE_DEFAULT, &limit_proxy_state), NULL }, | ||
| 712 | |||
| 713 | { "secret", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_SECRET, RADCLIENT, secret), NULL }, | ||
| 714 | { "shortname", FR_CONF_OFFSET(PW_TYPE_STRING, RADCLIENT, shortname), NULL }, | ||
| 715 | @@ -663,7 +667,7 @@ static const CONF_PARSER dynamic_config[] = { | ||
| 716 | { "FreeRADIUS-Client-Src-IP-Address", FR_CONF_OFFSET(PW_TYPE_IPV4_ADDR, RADCLIENT, src_ipaddr), NULL }, | ||
| 717 | { "FreeRADIUS-Client-Src-IPv6-Address", FR_CONF_OFFSET(PW_TYPE_IPV6_ADDR, RADCLIENT, src_ipaddr), NULL }, | ||
| 718 | |||
| 719 | - { "FreeRADIUS-Client-Require-MA", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, RADCLIENT, message_authenticator), NULL }, | ||
| 720 | + { "FreeRADIUS-Client-Require-MA", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, RADCLIENT, dynamic_require_ma), NULL }, | ||
| 721 | |||
| 722 | { "FreeRADIUS-Client-Secret", FR_CONF_OFFSET(PW_TYPE_STRING, RADCLIENT, secret), "" }, | ||
| 723 | { "FreeRADIUS-Client-Shortname", FR_CONF_OFFSET(PW_TYPE_STRING, RADCLIENT, shortname), "" }, | ||
| 724 | @@ -845,8 +849,19 @@ RADCLIENT *client_afrom_cs(TALLOC_CTX *ctx, CONF_SECTION *cs, bool in_server, bo | ||
| 725 | c = talloc_zero(ctx, RADCLIENT); | ||
| 726 | c->cs = cs; | ||
| 727 | |||
| 728 | + /* | ||
| 729 | + * Set the "require message authenticator" and "limit | ||
| 730 | + * proxy state" flags from the global default. If the | ||
| 731 | + * configuration item exists, AND is set, it will | ||
| 732 | + * over-ride the flag. | ||
| 733 | + */ | ||
| 734 | + c->require_ma = main_config.require_ma; | ||
| 735 | + c->limit_proxy_state = main_config.limit_proxy_state; | ||
| 736 | + | ||
| 737 | memset(&cl_ipaddr, 0, sizeof(cl_ipaddr)); | ||
| 738 | cl_netmask = 255; | ||
| 739 | + require_message_authenticator = NULL; | ||
| 740 | + limit_proxy_state = NULL; | ||
| 741 | |||
| 742 | if (cf_section_parse(cs, c, client_config) < 0) { | ||
| 743 | cf_log_err_cs(cs, "Error parsing client section"); | ||
| 744 | @@ -857,6 +872,9 @@ RADCLIENT *client_afrom_cs(TALLOC_CTX *ctx, CONF_SECTION *cs, bool in_server, bo | ||
| 745 | cl_srcipaddr = NULL; | ||
| 746 | #endif | ||
| 747 | |||
| 748 | + require_message_authenticator = NULL; | ||
| 749 | + limit_proxy_state = NULL; | ||
| 750 | + | ||
| 751 | return NULL; | ||
| 752 | } | ||
| 753 | |||
| 754 | @@ -1114,6 +1132,16 @@ done_coa: | ||
| 755 | } | ||
| 756 | #endif | ||
| 757 | |||
| 758 | + if (fr_bool_auto_parse(cf_pair_find(cs, "require_message_authenticator"), &c->require_ma, require_message_authenticator) < 0) { | ||
| 759 | + goto error; | ||
| 760 | + } | ||
| 761 | + | ||
| 762 | + if (c->require_ma != FR_BOOL_TRUE) { | ||
| 763 | + if (fr_bool_auto_parse(cf_pair_find(cs, "limit_proxy_state"), &c->limit_proxy_state, limit_proxy_state) < 0) { | ||
| 764 | + goto error; | ||
| 765 | + } | ||
| 766 | + } | ||
| 767 | + | ||
| 768 | return c; | ||
| 769 | } | ||
| 770 | |||
| 771 | @@ -1158,7 +1186,7 @@ RADCLIENT *client_afrom_query(TALLOC_CTX *ctx, char const *identifier, char cons | ||
| 772 | if (shortname) c->shortname = talloc_typed_strdup(c, shortname); | ||
| 773 | if (type) c->nas_type = talloc_typed_strdup(c, type); | ||
| 774 | if (server) c->server = talloc_typed_strdup(c, server); | ||
| 775 | - c->message_authenticator = require_ma; | ||
| 776 | + c->require_ma = require_ma; | ||
| 777 | |||
| 778 | return c; | ||
| 779 | } | ||
| 780 | @@ -1344,10 +1372,10 @@ RADCLIENT *client_afrom_request(RADCLIENT_LIST *clients, REQUEST *request) | ||
| 781 | *pi = vp->vp_integer; | ||
| 782 | |||
| 783 | /* | ||
| 784 | - * Same nastiness as above. | ||
| 785 | + * Same nastiness as above, but hard-coded for require Message-Authenticator. | ||
| 786 | */ | ||
| 787 | for (parse = client_config; parse->name; parse++) { | ||
| 788 | - if (parse->offset == dynamic_config[i].offset) break; | ||
| 789 | + if (parse->type == PW_TYPE_BOOLEAN) break; | ||
| 790 | } | ||
| 791 | if (!parse) break; | ||
| 792 | |||
| 793 | @@ -1436,6 +1464,11 @@ validate: | ||
| 794 | goto error; | ||
| 795 | } | ||
| 796 | |||
| 797 | + /* | ||
| 798 | + * It can't be set to "auto". Too bad. | ||
| 799 | + */ | ||
| 800 | + c->require_ma = (fr_bool_auto_t) c->dynamic_require_ma; | ||
| 801 | + | ||
| 802 | if (!client_add_dynamic(clients, request->client, c)) { | ||
| 803 | return NULL; | ||
| 804 | } | ||
| 805 | diff --git a/src/main/conffile.c b/src/main/conffile.c | ||
| 806 | index a8c667bfb5..61754e991f 100644 | ||
| 807 | --- a/src/main/conffile.c | ||
| 808 | +++ b/src/main/conffile.c | ||
| 809 | @@ -1418,6 +1418,7 @@ int cf_item_parse(CONF_SECTION *cs, char const *name, unsigned int type, void *d | ||
| 810 | { | ||
| 811 | int rcode; | ||
| 812 | bool deprecated, required, attribute, secret, file_input, cant_be_empty, tmpl, multi, file_exists; | ||
| 813 | + bool ignore_dflt; | ||
| 814 | char **q; | ||
| 815 | char const *value; | ||
| 816 | CONF_PAIR *cp = NULL; | ||
| 817 | @@ -1441,6 +1442,7 @@ int cf_item_parse(CONF_SECTION *cs, char const *name, unsigned int type, void *d | ||
| 818 | cant_be_empty = (type & PW_TYPE_NOT_EMPTY); | ||
| 819 | tmpl = (type & PW_TYPE_TMPL); | ||
| 820 | multi = (type & PW_TYPE_MULTI); | ||
| 821 | + ignore_dflt = (type & PW_TYPE_IGNORE_DEFAULT); | ||
| 822 | |||
| 823 | if (attribute) required = true; | ||
| 824 | if (required) cant_be_empty = true; /* May want to review this in the future... */ | ||
| 825 | @@ -1464,7 +1466,7 @@ int cf_item_parse(CONF_SECTION *cs, char const *name, unsigned int type, void *d | ||
| 826 | * section, use the default value. | ||
| 827 | */ | ||
| 828 | if (!cp) { | ||
| 829 | - if (deprecated) return 0; /* Don't set the default value */ | ||
| 830 | + if (deprecated || ignore_dflt) return 0; /* Don't set the default value */ | ||
| 831 | |||
| 832 | rcode = 1; | ||
| 833 | value = dflt; | ||
| 834 | diff --git a/src/main/listen.c b/src/main/listen.c | ||
| 835 | index ebf7f5221c..c20fea243d 100644 | ||
| 836 | --- a/src/main/listen.c | ||
| 837 | +++ b/src/main/listen.c | ||
| 838 | @@ -456,6 +456,122 @@ int rad_status_server(REQUEST *request) | ||
| 839 | return 0; | ||
| 840 | } | ||
| 841 | |||
| 842 | +static void blastradius_checks(RADIUS_PACKET *packet, RADCLIENT *client) | ||
| 843 | +{ | ||
| 844 | + if (client->require_ma == FR_BOOL_TRUE) return; | ||
| 845 | + | ||
| 846 | + if (client->require_ma == FR_BOOL_AUTO) { | ||
| 847 | + if (!packet->message_authenticator) { | ||
| 848 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 849 | + ERROR("BlastRADIUS check: Received packet without Message-Authenticator."); | ||
| 850 | + ERROR("Setting \"require_message_authenticator = false\" for client %s", client->shortname); | ||
| 851 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 852 | + ERROR("UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 853 | + ERROR("Once the client is upgraded, set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 854 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 855 | + client->require_ma = FR_BOOL_FALSE; | ||
| 856 | + | ||
| 857 | + /* | ||
| 858 | + * And fall through to the | ||
| 859 | + * limit_proxy_state checks, which might | ||
| 860 | + * complain again. Oh well, maybe that | ||
| 861 | + * will make people read the messages. | ||
| 862 | + */ | ||
| 863 | + | ||
| 864 | + } else if (packet->eap_message) { | ||
| 865 | + /* | ||
| 866 | + * Don't set it to "true" for packets | ||
| 867 | + * with EAP-Message. It's already | ||
| 868 | + * required there, and we might get a | ||
| 869 | + * non-EAP packet with (or without) | ||
| 870 | + * Message-Authenticator | ||
| 871 | + */ | ||
| 872 | + return; | ||
| 873 | + } else { | ||
| 874 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 875 | + ERROR("BlastRADIUS check: Received packet with Message-Authenticator."); | ||
| 876 | + ERROR("Setting \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 877 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 878 | + ERROR("It looks like the client has been updated to protect from the BlastRADIUS attack."); | ||
| 879 | + ERROR("Please set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 880 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 881 | + | ||
| 882 | + client->require_ma = FR_BOOL_TRUE; | ||
| 883 | + return; | ||
| 884 | + } | ||
| 885 | + | ||
| 886 | + } | ||
| 887 | + | ||
| 888 | + /* | ||
| 889 | + * If all of the checks are turned off, then complain for every packet we receive. | ||
| 890 | + */ | ||
| 891 | + if (client->limit_proxy_state == FR_BOOL_FALSE) { | ||
| 892 | + /* | ||
| 893 | + * We have a Message-Authenticator, and it's valid. We don't need to compain. | ||
| 894 | + */ | ||
| 895 | + if (!fr_debug_lvl) return; /* easier than checking for each line below */ | ||
| 896 | + | ||
| 897 | + DEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 898 | + DEBUG("BlastRADIUS check: Received packet without Message-Authenticator."); | ||
| 899 | + DEBUG("YOU MUST SET \"require_message_authenticator = true\", or"); | ||
| 900 | + DEBUG("YOU MUST SET \"limit_proxy_state = true\" for client %s", client->shortname); | ||
| 901 | + DEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 902 | + DEBUG("The packet does not contain Message-Authenticator, which is a security issue"); | ||
| 903 | + DEBUG("UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 904 | + DEBUG("Once the client is upgraded, set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 905 | + DEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 906 | + return; | ||
| 907 | + } | ||
| 908 | + | ||
| 909 | + /* | ||
| 910 | + * Don't complain here. rad_packet_ok() will instead | ||
| 911 | + * complain about every packet with Proxy-State but which | ||
| 912 | + * is missing Message-Authenticator. | ||
| 913 | + */ | ||
| 914 | + if (client->limit_proxy_state == FR_BOOL_TRUE) { | ||
| 915 | + return; | ||
| 916 | + } | ||
| 917 | + | ||
| 918 | + if (packet->proxy_state && !packet->message_authenticator) { | ||
| 919 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 920 | + ERROR("BlastRADIUS check: Received packet with Proxy-State, but without Message-Authenticator."); | ||
| 921 | + ERROR("This is either a BlastRADIUS attack, OR"); | ||
| 922 | + ERROR("the client is a proxy RADIUS server which has not been upgraded."); | ||
| 923 | + ERROR("Setting \"limit_proxy_state = false\" for client %s", client->shortname); | ||
| 924 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 925 | + ERROR("UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 926 | + DEBUG("Once the client is upgraded, set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 927 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 928 | + | ||
| 929 | + client->limit_proxy_state = FR_BOOL_FALSE; | ||
| 930 | + | ||
| 931 | + } else { | ||
| 932 | + client->limit_proxy_state = FR_BOOL_TRUE; | ||
| 933 | + | ||
| 934 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 935 | + if (!packet->proxy_state) { | ||
| 936 | + ERROR("BlastRADIUS check: Received packet without Proxy-State."); | ||
| 937 | + } else { | ||
| 938 | + ERROR("BlastRADIUS check: Received packet with Proxy-State and Message-Authenticator."); | ||
| 939 | + } | ||
| 940 | + | ||
| 941 | + ERROR("Setting \"limit_proxy_state = true\" for client %s", client->shortname); | ||
| 942 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 943 | + | ||
| 944 | + if (!packet->message_authenticator) { | ||
| 945 | + ERROR("The packet does not contain Message-Authenticator, which is a security issue."); | ||
| 946 | + ERROR("UPGRADE THE CLIENT AS YOUR NETWORK MAY BE VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 947 | + DEBUG("Once the client is upgraded, set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 948 | + } else { | ||
| 949 | + ERROR("The packet contains Message-Authenticator."); | ||
| 950 | + if (!packet->eap_message) ERROR("The client has likely been upgraded to protect from the attack."); | ||
| 951 | + ERROR("Please set \"require_message_authenticator = true\" for client %s", client->shortname); | ||
| 952 | + } | ||
| 953 | + ERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 954 | + } | ||
| 955 | +} | ||
| 956 | + | ||
| 957 | + | ||
| 958 | #ifdef WITH_TCP | ||
| 959 | static int dual_tcp_recv(rad_listen_t *listener) | ||
| 960 | { | ||
| 961 | @@ -532,6 +648,21 @@ static int dual_tcp_recv(rad_listen_t *listener) | ||
| 962 | switch (packet->code) { | ||
| 963 | case PW_CODE_ACCESS_REQUEST: | ||
| 964 | if (listener->type != RAD_LISTEN_AUTH) goto bad_packet; | ||
| 965 | + | ||
| 966 | + /* | ||
| 967 | + * Enforce BlastRADIUS checks on TCP, too. | ||
| 968 | + */ | ||
| 969 | + if (!rad_packet_ok(packet, (client->require_ma == FR_BOOL_TRUE) | ((client->limit_proxy_state == FR_BOOL_TRUE) << 2), NULL)) { | ||
| 970 | + FR_STATS_INC(auth, total_malformed_requests); | ||
| 971 | + rad_free(&sock->packet); | ||
| 972 | + return 0; | ||
| 973 | + } | ||
| 974 | + | ||
| 975 | + /* | ||
| 976 | + * Perform BlastRADIUS checks and warnings. | ||
| 977 | + */ | ||
| 978 | + if (packet->code == PW_CODE_ACCESS_REQUEST) blastradius_checks(packet, client); | ||
| 979 | + | ||
| 980 | FR_STATS_INC(auth, total_requests); | ||
| 981 | fun = rad_authenticate; | ||
| 982 | break; | ||
| 983 | @@ -1562,7 +1693,7 @@ static int auth_socket_recv(rad_listen_t *listener) | ||
| 984 | * Now that we've sanity checked everything, receive the | ||
| 985 | * packet. | ||
| 986 | */ | ||
| 987 | - packet = rad_recv(ctx, listener->fd, client->message_authenticator); | ||
| 988 | + packet = rad_recv(ctx, listener->fd, (client->require_ma == FR_BOOL_TRUE) | ((client->limit_proxy_state == FR_BOOL_TRUE) << 2)); | ||
| 989 | if (!packet) { | ||
| 990 | FR_STATS_INC(auth, total_malformed_requests); | ||
| 991 | if (DEBUG_ENABLED) ERROR("Receive - %s", fr_strerror()); | ||
| 992 | @@ -1570,6 +1701,12 @@ static int auth_socket_recv(rad_listen_t *listener) | ||
| 993 | return 0; | ||
| 994 | } | ||
| 995 | |||
| 996 | + | ||
| 997 | + /* | ||
| 998 | + * Perform BlastRADIUS checks and warnings. | ||
| 999 | + */ | ||
| 1000 | + if (packet->code == PW_CODE_ACCESS_REQUEST) blastradius_checks(packet, client); | ||
| 1001 | + | ||
| 1002 | #ifdef __APPLE__ | ||
| 1003 | #ifdef WITH_UDPFROMTO | ||
| 1004 | /* | ||
| 1005 | @@ -1955,7 +2092,7 @@ static int coa_socket_recv(rad_listen_t *listener) | ||
| 1006 | * Now that we've sanity checked everything, receive the | ||
| 1007 | * packet. | ||
| 1008 | */ | ||
| 1009 | - packet = rad_recv(ctx, listener->fd, client->message_authenticator); | ||
| 1010 | + packet = rad_recv(ctx, listener->fd, client->require_ma | (((int) client->limit_proxy_state) << 2)); | ||
| 1011 | if (!packet) { | ||
| 1012 | FR_STATS_INC(coa, total_malformed_requests); | ||
| 1013 | if (DEBUG_ENABLED) ERROR("Receive - %s", fr_strerror()); | ||
| 1014 | diff --git a/src/main/mainconfig.c b/src/main/mainconfig.c | ||
| 1015 | index e9dd412dee..520d7fa474 100644 | ||
| 1016 | --- a/src/main/mainconfig.c | ||
| 1017 | +++ b/src/main/mainconfig.c | ||
| 1018 | @@ -73,6 +73,8 @@ static char const *gid_name = NULL; | ||
| 1019 | static char const *chroot_dir = NULL; | ||
| 1020 | static bool allow_core_dumps = false; | ||
| 1021 | static char const *radlog_dest = NULL; | ||
| 1022 | +static char const *require_message_authenticator = NULL; | ||
| 1023 | +static char const *limit_proxy_state = NULL; | ||
| 1024 | |||
| 1025 | /* | ||
| 1026 | * These are not used anywhere else.. | ||
| 1027 | @@ -87,6 +89,53 @@ static bool do_colourise = false; | ||
| 1028 | |||
| 1029 | static char const *radius_dir = NULL; //!< Path to raddb directory | ||
| 1030 | |||
| 1031 | +static const FR_NAME_NUMBER fr_bool_auto_names[] = { | ||
| 1032 | + { "false", FR_BOOL_FALSE }, | ||
| 1033 | + { "no", FR_BOOL_FALSE }, | ||
| 1034 | + { "0", FR_BOOL_FALSE }, | ||
| 1035 | + | ||
| 1036 | + { "true", FR_BOOL_TRUE }, | ||
| 1037 | + { "yes", FR_BOOL_TRUE }, | ||
| 1038 | + { "1", FR_BOOL_TRUE }, | ||
| 1039 | + | ||
| 1040 | + { "auto", FR_BOOL_AUTO }, | ||
| 1041 | + | ||
| 1042 | + { NULL, 0 } | ||
| 1043 | +}; | ||
| 1044 | + | ||
| 1045 | +/* | ||
| 1046 | + * Get decent values for false / true / auto | ||
| 1047 | + */ | ||
| 1048 | +int fr_bool_auto_parse(CONF_PAIR *cp, fr_bool_auto_t *out, char const *str) | ||
| 1049 | +{ | ||
| 1050 | + int value; | ||
| 1051 | + | ||
| 1052 | + /* | ||
| 1053 | + * Don't change anything. | ||
| 1054 | + */ | ||
| 1055 | + if (!str) return 0; | ||
| 1056 | + | ||
| 1057 | + value = fr_str2int(fr_bool_auto_names, str, -1); | ||
| 1058 | + if (value >= 0) { | ||
| 1059 | + *out = value; | ||
| 1060 | + return 0; | ||
| 1061 | + } | ||
| 1062 | + | ||
| 1063 | + /* | ||
| 1064 | + * This should never happen, as the defaults are in the | ||
| 1065 | + * source code. If there's no CONF_PAIR, and there's a | ||
| 1066 | + * parse error, then the source code is wrong. | ||
| 1067 | + */ | ||
| 1068 | + if (!cp) { | ||
| 1069 | + fprintf(stderr, "%s: Error - Invalid value in configuration", main_config.name); | ||
| 1070 | + return -1; | ||
| 1071 | + } | ||
| 1072 | + | ||
| 1073 | + cf_log_err(cf_pair_to_item(cp), "Invalid value for \"%s\"", cf_pair_attr(cp)); | ||
| 1074 | + return -1; | ||
| 1075 | +} | ||
| 1076 | + | ||
| 1077 | + | ||
| 1078 | /********************************************************************** | ||
| 1079 | * | ||
| 1080 | * We need to figure out where the logs go, before doing anything | ||
| 1081 | @@ -159,6 +208,8 @@ static const CONF_PARSER security_config[] = { | ||
| 1082 | { "max_attributes", FR_CONF_POINTER(PW_TYPE_INTEGER, &fr_max_attributes), STRINGIFY(0) }, | ||
| 1083 | { "reject_delay", FR_CONF_POINTER(PW_TYPE_TIMEVAL, &main_config.reject_delay), STRINGIFY(0) }, | ||
| 1084 | { "status_server", FR_CONF_POINTER(PW_TYPE_BOOLEAN, &main_config.status_server), "no"}, | ||
| 1085 | + { "require_message_authenticator", FR_CONF_POINTER(PW_TYPE_STRING, &require_message_authenticator), "auto"}, | ||
| 1086 | + { "limit_proxy_state", FR_CONF_POINTER(PW_TYPE_STRING, &limit_proxy_state), "auto"}, | ||
| 1087 | #ifdef ENABLE_OPENSSL_VERSION_CHECK | ||
| 1088 | { "allow_vulnerable_openssl", FR_CONF_POINTER(PW_TYPE_STRING, &main_config.allow_vulnerable_openssl), "no"}, | ||
| 1089 | #endif | ||
| 1090 | @@ -838,6 +889,8 @@ int main_config_init(void) | ||
| 1091 | if (!main_config.dictionary_dir) { | ||
| 1092 | main_config.dictionary_dir = DICTDIR; | ||
| 1093 | } | ||
| 1094 | + main_config.require_ma = FR_BOOL_AUTO; | ||
| 1095 | + main_config.limit_proxy_state = FR_BOOL_AUTO; | ||
| 1096 | |||
| 1097 | /* | ||
| 1098 | * About sizeof(REQUEST) + sizeof(RADIUS_PACKET) * 2 + sizeof(VALUE_PAIR) * 400 | ||
| 1099 | @@ -1127,6 +1180,23 @@ do {\ | ||
| 1100 | main_config.init_delay.tv_sec = 0; | ||
| 1101 | main_config.init_delay.tv_usec = 2* (1000000 / 3); | ||
| 1102 | |||
| 1103 | + { | ||
| 1104 | + CONF_PAIR *cp = NULL; | ||
| 1105 | + | ||
| 1106 | + subcs = cf_section_sub_find(cs, "security"); | ||
| 1107 | + if (subcs) cp = cf_pair_find(subcs, "require_message_authenticator"); | ||
| 1108 | + if (fr_bool_auto_parse(cp, &main_config.require_ma, require_message_authenticator) < 0) { | ||
| 1109 | + cf_file_free(cs); | ||
| 1110 | + return -1; | ||
| 1111 | + } | ||
| 1112 | + | ||
| 1113 | + if (subcs) cp = cf_pair_find(subcs, "limit_proxy_state"); | ||
| 1114 | + if (fr_bool_auto_parse(cp, &main_config.limit_proxy_state, limit_proxy_state) < 0) { | ||
| 1115 | + cf_file_free(cs); | ||
| 1116 | + return -1; | ||
| 1117 | + } | ||
| 1118 | + } | ||
| 1119 | + | ||
| 1120 | /* | ||
| 1121 | * Free the old configuration items, and replace them | ||
| 1122 | * with the new ones. | ||
| 1123 | diff --git a/src/main/process.c b/src/main/process.c | ||
| 1124 | index 1a48517d43..401033bdd6 100644 | ||
| 1125 | --- a/src/main/process.c | ||
| 1126 | +++ b/src/main/process.c | ||
| 1127 | @@ -2593,6 +2593,23 @@ int request_proxy_reply(RADIUS_PACKET *packet) | ||
| 1128 | |||
| 1129 | PTHREAD_MUTEX_UNLOCK(&proxy_mutex); | ||
| 1130 | |||
| 1131 | + if (!request->proxy_reply) { | ||
| 1132 | + decode_fail_t reason; | ||
| 1133 | + | ||
| 1134 | + /* | ||
| 1135 | + * If the home server configuration requires a Message-Authenticator, then set the flag, | ||
| 1136 | + * but only if the proxied packet is Access-Request or Status-Sercer. | ||
| 1137 | + * | ||
| 1138 | + * The realms.c file already clears require_ma for TLS connections. | ||
| 1139 | + */ | ||
| 1140 | + bool require_ma = (request->home_server->require_ma == FR_BOOL_TRUE) && (request->proxy->code == PW_CODE_ACCESS_REQUEST); | ||
| 1141 | + | ||
| 1142 | + if(!rad_packet_ok(packet, require_ma, &reason)) { | ||
| 1143 | + DEBUG("Ignoring invalid packet - %s", fr_strerror()); | ||
| 1144 | + return 0; | ||
| 1145 | + } | ||
| 1146 | + } | ||
| 1147 | + | ||
| 1148 | /* | ||
| 1149 | * No reply, BUT the current packet fails verification: | ||
| 1150 | * ignore it. This does the MD5 calculations in the | ||
| 1151 | @@ -2618,6 +2635,54 @@ int request_proxy_reply(RADIUS_PACKET *packet) | ||
| 1152 | return 0; | ||
| 1153 | } | ||
| 1154 | |||
| 1155 | + | ||
| 1156 | + /* | ||
| 1157 | + * BlastRADIUS checks. We're running in the main | ||
| 1158 | + * listener thread, so there's no conflict | ||
| 1159 | + * checking or setting these fields. | ||
| 1160 | + */ | ||
| 1161 | + if (!request->proxy_reply && (request->proxy->code == PW_CODE_ACCESS_REQUEST) && | ||
| 1162 | +#ifdef WITH_TLS | ||
| 1163 | + !request->home_server->tls && | ||
| 1164 | +#endif | ||
| 1165 | + !packet->eap_message) { | ||
| 1166 | + if (request->home_server->require_ma == FR_BOOL_AUTO) { | ||
| 1167 | + if (!packet->message_authenticator) { | ||
| 1168 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1169 | + RERROR("BlastRADIUS check: Received response to Access-Request without Message-Authenticator."); | ||
| 1170 | + RERROR("Setting \"require_message_authenticator = false\" for home_server %s", request->home_server->name); | ||
| 1171 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1172 | + RERROR("UPGRADE THE HOME SERVER AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 1173 | + RERROR("Once the home_server is upgraded, set \"require_message_authenticator = true\" for home_server %s.", request->home_server->name); | ||
| 1174 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1175 | + | ||
| 1176 | + request->home_server->require_ma = FR_BOOL_FALSE; | ||
| 1177 | + } else { | ||
| 1178 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1179 | + RERROR("BlastRADIUS check: Received response to Access-Request with Message-Authenticator."); | ||
| 1180 | + RERROR("Setting \"require_message_authenticator = true\" for home_server %s", request->home_server->name); | ||
| 1181 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1182 | + RERROR("It looks like the home server has been updated to protect from the BlastRADIUS attack."); | ||
| 1183 | + RERROR("Please set \"require_message_authenticator = true\" for home_server %s", request->home_server->name); | ||
| 1184 | + RERROR("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1185 | + | ||
| 1186 | + request->home_server->require_ma = FR_BOOL_TRUE; | ||
| 1187 | + } | ||
| 1188 | + | ||
| 1189 | + } else if (fr_debug_lvl && (request->home_server->require_ma == FR_BOOL_FALSE) && !packet->message_authenticator) { | ||
| 1190 | + /* | ||
| 1191 | + * If it's "no" AND we don't have a Message-Authenticator, then complain on every packet. | ||
| 1192 | + */ | ||
| 1193 | + RDEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1194 | + RDEBUG("BlastRADIUS check: Received packet without Message-Authenticator from home_server %s", request->home_server->name); | ||
| 1195 | + RDEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1196 | + RDEBUG("The packet does not contain Message-Authenticator, which is a security issue"); | ||
| 1197 | + RDEBUG("UPGRADE THE HOME SERVER AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK."); | ||
| 1198 | + RERROR("Once the home_server is upgraded, set \"require_message_authenticator = true\" for home_server %s.", request->home_server->name); | ||
| 1199 | + RDEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); | ||
| 1200 | + } | ||
| 1201 | + } | ||
| 1202 | + | ||
| 1203 | /* | ||
| 1204 | * This shouldn't happen, but threads and race | ||
| 1205 | * conditions. | ||
| 1206 | diff --git a/src/main/radclient.c b/src/main/radclient.c | ||
| 1207 | index 52d2872b13..47d5f07785 100644 | ||
| 1208 | --- a/src/main/radclient.c | ||
| 1209 | +++ b/src/main/radclient.c | ||
| 1210 | @@ -54,6 +54,7 @@ static fr_ipaddr_t server_ipaddr; | ||
| 1211 | static int resend_count = 1; | ||
| 1212 | static bool done = true; | ||
| 1213 | static bool print_filename = false; | ||
| 1214 | +static bool blast_radius = false; | ||
| 1215 | |||
| 1216 | static fr_ipaddr_t client_ipaddr; | ||
| 1217 | static uint16_t client_port = 0; | ||
| 1218 | @@ -89,6 +90,7 @@ static void NEVER_RETURNS usage(void) | ||
| 1219 | fprintf(stderr, " <command> One of auth, acct, status, coa, disconnect or auto.\n"); | ||
| 1220 | fprintf(stderr, " -4 Use IPv4 address of server\n"); | ||
| 1221 | fprintf(stderr, " -6 Use IPv6 address of server.\n"); | ||
| 1222 | + fprintf(stderr, " -b Mandate checks for Blast RADIUS (this is not set by default).\n"); | ||
| 1223 | fprintf(stderr, " -c <count> Send each packet 'count' times.\n"); | ||
| 1224 | fprintf(stderr, " -d <raddb> Set user dictionary directory (defaults to " RADDBDIR ").\n"); | ||
| 1225 | fprintf(stderr, " -D <dictdir> Set main dictionary directory (defaults to " DICTDIR ").\n"); | ||
| 1226 | @@ -1000,6 +1002,130 @@ static int send_one_packet(rc_request_t *request) | ||
| 1227 | return 0; | ||
| 1228 | } | ||
| 1229 | |||
| 1230 | +/* | ||
| 1231 | + * Do Blast RADIUS checks. | ||
| 1232 | + * | ||
| 1233 | + * The request is an Access-Request, and does NOT contain Proxy-State. | ||
| 1234 | + * | ||
| 1235 | + * The reply is a raw packet, and is NOT yet decoded. | ||
| 1236 | + */ | ||
| 1237 | +static int blast_radius_check(rc_request_t *request, RADIUS_PACKET *reply) | ||
| 1238 | +{ | ||
| 1239 | + uint8_t *attr, *end; | ||
| 1240 | + VALUE_PAIR *vp; | ||
| 1241 | + bool have_message_authenticator = false; | ||
| 1242 | + | ||
| 1243 | + /* | ||
| 1244 | + * We've received a raw packet. Nothing has (as of yet) checked | ||
| 1245 | + * anything in it other than the length, and that it's a | ||
| 1246 | + * well-formed RADIUS packet. | ||
| 1247 | + */ | ||
| 1248 | + switch (reply->data[0]) { | ||
| 1249 | + case PW_CODE_ACCESS_ACCEPT: | ||
| 1250 | + case PW_CODE_ACCESS_REJECT: | ||
| 1251 | + case PW_CODE_ACCESS_CHALLENGE: | ||
| 1252 | + if (reply->data[1] != request->packet->id) { | ||
| 1253 | + ERROR("Invalid reply ID %d to Access-Request ID %d", reply->data[1], request->packet->id); | ||
| 1254 | + return -1; | ||
| 1255 | + } | ||
| 1256 | + break; | ||
| 1257 | + | ||
| 1258 | + default: | ||
| 1259 | + ERROR("Invalid reply code %d to Access-Request", reply->data[0]); | ||
| 1260 | + return -1; | ||
| 1261 | + } | ||
| 1262 | + | ||
| 1263 | + /* | ||
| 1264 | + * If the reply has a Message-Authenticator, then it MIGHT be fine. | ||
| 1265 | + */ | ||
| 1266 | + attr = reply->data + 20; | ||
| 1267 | + end = reply->data + reply->data_len; | ||
| 1268 | + | ||
| 1269 | + /* | ||
| 1270 | + * It should be the first attribute, so we warn if it isn't there. | ||
| 1271 | + * | ||
| 1272 | + * But it's not a fatal error. | ||
| 1273 | + */ | ||
| 1274 | + if (blast_radius && (attr[0] != PW_MESSAGE_AUTHENTICATOR)) { | ||
| 1275 | + RDEBUG("WARNING The %s reply packet does not have Message-Authenticator as the first attribute. The packet may be vulnerable to Blast RADIUS attacks.", | ||
| 1276 | + fr_packet_codes[reply->data[0]]); | ||
| 1277 | + } | ||
| 1278 | + | ||
| 1279 | + /* | ||
| 1280 | + * Set up for Proxy-State checks. | ||
| 1281 | + * | ||
| 1282 | + * If we see a Proxy-State in the reply which we didn't send, then it's a Blast RADIUS attack. | ||
| 1283 | + */ | ||
| 1284 | + vp = fr_pair_find_by_num(request->packet->vps, PW_PROXY_STATE, 0, TAG_ANY); | ||
| 1285 | + | ||
| 1286 | + while (attr < end) { | ||
| 1287 | + /* | ||
| 1288 | + * Blast RADIUS work-arounds require that | ||
| 1289 | + * Message-Authenticator is the first attribute in the | ||
| 1290 | + * reply. Note that we don't check for it being the | ||
| 1291 | + * first attribute, but simply that it exists. | ||
| 1292 | + * | ||
| 1293 | + * That check is a balance between securing the reply | ||
| 1294 | + * packet from attacks, and not violating the RFCs which | ||
| 1295 | + * say that there is no order to attributes in the | ||
| 1296 | + * packet. | ||
| 1297 | + * | ||
| 1298 | + * However, no matter the status of the '-b' flag we | ||
| 1299 | + * still can check for the signature of the attack, and | ||
| 1300 | + * discard packets which are suspicious. This behavior | ||
| 1301 | + * protects radclient from the attack, without mandating | ||
| 1302 | + * new behavior on the server side. | ||
| 1303 | + * | ||
| 1304 | + * Note that we don't set the '-b' flag by default. | ||
| 1305 | + * radclient is intended for testing / debugging, and is | ||
| 1306 | + * not intended to be used as part of a secure login / | ||
| 1307 | + * user checking system. | ||
| 1308 | + */ | ||
| 1309 | + if (attr[0] == PW_MESSAGE_AUTHENTICATOR) { | ||
| 1310 | + have_message_authenticator = true; | ||
| 1311 | + goto next; | ||
| 1312 | + } | ||
| 1313 | + | ||
| 1314 | + /* | ||
| 1315 | + * If there are Proxy-State attributes in the reply, they must | ||
| 1316 | + * match EXACTLY the Proxy-State attributes in the request. | ||
| 1317 | + * | ||
| 1318 | + * Note that we don't care if there are more Proxy-States | ||
| 1319 | + * in the request than in the reply. The Blast RADIUS | ||
| 1320 | + * issue requires _adding_ Proxy-State attributes, and | ||
| 1321 | + * cannot work when the server _deletes_ Proxy-State | ||
| 1322 | + * attributes. | ||
| 1323 | + */ | ||
| 1324 | + if (attr[0] == PW_PROXY_STATE) { | ||
| 1325 | + if (!vp || (vp->length != (size_t) (attr[1] - 2)) || (memcmp(vp->vp_octets, attr + 2, vp->length) != 0)) { | ||
| 1326 | + ERROR("Invalid reply to Access-Request ID %d - Discarding packet due to Blast RADIUS attack being detected.", request->packet->id); | ||
| 1327 | + ERROR("We received a Proxy-State in the reply which we did not send, or which is different from what we sent."); | ||
| 1328 | + return -1; | ||
| 1329 | + } | ||
| 1330 | + | ||
| 1331 | + vp = fr_pair_find_by_num(vp->next, PW_PROXY_STATE, 0, TAG_ANY); | ||
| 1332 | + } | ||
| 1333 | + | ||
| 1334 | + next: | ||
| 1335 | + attr += attr[1]; | ||
| 1336 | + } | ||
| 1337 | + | ||
| 1338 | + /* | ||
| 1339 | + * If "-b" is set, then we require Message-Authenticator in the reply. | ||
| 1340 | + */ | ||
| 1341 | + if (blast_radius && !have_message_authenticator) { | ||
| 1342 | + ERROR("The %s reply packet does not contain Message-Authenticator - discarding packet due to Blast RADIUS checks.", | ||
| 1343 | + fr_packet_codes[reply->data[0]]); | ||
| 1344 | + return -1; | ||
| 1345 | + } | ||
| 1346 | + | ||
| 1347 | + /* | ||
| 1348 | + * The packet doesn't look like it's a Blast RADIUS attack. The | ||
| 1349 | + * caller will now verify the packet signature. | ||
| 1350 | + */ | ||
| 1351 | + return 0; | ||
| 1352 | +} | ||
| 1353 | + | ||
| 1354 | /* | ||
| 1355 | * Receive one packet, maybe. | ||
| 1356 | */ | ||
| 1357 | @@ -1051,6 +1177,21 @@ static int recv_one_packet(int wait_time) | ||
| 1358 | } | ||
| 1359 | request = fr_packet2myptr(rc_request_t, packet, packet_p); | ||
| 1360 | |||
| 1361 | + | ||
| 1362 | + /* | ||
| 1363 | + * We want radclient to be able to send any packet, including | ||
| 1364 | + * imperfect ones. However, we do NOT want to be vulnerable to | ||
| 1365 | + * the "Blast RADIUS" issue. Instead of adding command-line | ||
| 1366 | + * flags to enable/disable similar flags to what the server | ||
| 1367 | + * sends, we just do a few more smart checks to double-check | ||
| 1368 | + * things. | ||
| 1369 | + */ | ||
| 1370 | + if ((request->packet->code == PW_CODE_ACCESS_REQUEST) && | ||
| 1371 | + blast_radius_check(request, reply) < 0) { | ||
| 1372 | + rad_free(&reply); | ||
| 1373 | + return -1; | ||
| 1374 | + } | ||
| 1375 | + | ||
| 1376 | /* | ||
| 1377 | * Fails the signature validation: not a real reply. | ||
| 1378 | * FIXME: Silently drop it and listen for another packet. | ||
| 1379 | @@ -1183,7 +1324,7 @@ int main(int argc, char **argv) | ||
| 1380 | exit(1); | ||
| 1381 | } | ||
| 1382 | |||
| 1383 | - while ((c = getopt(argc, argv, "46c:d:D:f:Fhn:p:qr:sS:t:vx" | ||
| 1384 | + while ((c = getopt(argc, argv, "46bc:d:D:f:Fhn:p:qr:sS:t:vx" | ||
| 1385 | #ifdef WITH_TCP | ||
| 1386 | "P:" | ||
| 1387 | #endif | ||
| 1388 | @@ -1192,6 +1333,10 @@ int main(int argc, char **argv) | ||
| 1389 | force_af = AF_INET; | ||
| 1390 | break; | ||
| 1391 | |||
| 1392 | + case 'b': | ||
| 1393 | + blast_radius = true; | ||
| 1394 | + break; | ||
| 1395 | + | ||
| 1396 | case '6': | ||
| 1397 | force_af = AF_INET6; | ||
| 1398 | break; | ||
| 1399 | diff --git a/src/main/radtest.in b/src/main/radtest.in | ||
| 1400 | index 38b1ba9a0f..8a6741a26c 100644 | ||
| 1401 | --- a/src/main/radtest.in | ||
| 1402 | +++ b/src/main/radtest.in | ||
| 1403 | @@ -19,6 +19,7 @@ usage() { | ||
| 1404 | echo " -x Enable debug output" >&2 | ||
| 1405 | echo " -4 Use IPv4 for the NAS address (default)" >&2 | ||
| 1406 | echo " -6 Use IPv6 for the NAS address" >&2 | ||
| 1407 | + echo " -6 Mandate checks for Blast RADIUS (this is not set by default)." >&2 | ||
| 1408 | exit 1 | ||
| 1409 | } | ||
| 1410 | |||
| 1411 | @@ -55,6 +56,10 @@ do | ||
| 1412 | NAS_ADDR_ATTR="NAS-IPv6-Address" | ||
| 1413 | shift | ||
| 1414 | ;; | ||
| 1415 | + -b) | ||
| 1416 | + OPTIONS="$OPTIONS -b" | ||
| 1417 | + shift | ||
| 1418 | + ;; | ||
| 1419 | -d) | ||
| 1420 | OPTIONS="$OPTIONS -d $2" | ||
| 1421 | shift;shift | ||
| 1422 | @@ -120,7 +125,6 @@ fi | ||
| 1423 | echo "$PASSWORD = \"$2\"" | ||
| 1424 | echo "$NAS_ADDR_ATTR = $nas" | ||
| 1425 | echo "NAS-Port = $4" | ||
| 1426 | - echo "Message-Authenticator = 0x00" | ||
| 1427 | if [ "$radclient" = "$radeapclient" ] | ||
| 1428 | then | ||
| 1429 | echo "EAP-Code = Response" | ||
| 1430 | diff --git a/src/main/realms.c b/src/main/realms.c | ||
| 1431 | index eb42598116..5e1215c0bb 100644 | ||
| 1432 | --- a/src/main/realms.c | ||
| 1433 | +++ b/src/main/realms.c | ||
| 1434 | @@ -366,7 +366,10 @@ static CONF_PARSER home_server_coa[] = { | ||
| 1435 | }; | ||
| 1436 | #endif | ||
| 1437 | |||
| 1438 | +static const char *require_message_authenticator = NULL; | ||
| 1439 | + | ||
| 1440 | static CONF_PARSER home_server_config[] = { | ||
| 1441 | + { "require_message_authenticator", FR_CONF_POINTER(PW_TYPE_STRING| PW_TYPE_IGNORE_DEFAULT, &require_message_authenticator), NULL }, | ||
| 1442 | { "ipaddr", FR_CONF_OFFSET(PW_TYPE_COMBO_IP_ADDR, home_server_t, ipaddr), NULL }, | ||
| 1443 | { "ipv4addr", FR_CONF_OFFSET(PW_TYPE_IPV4_ADDR, home_server_t, ipaddr), NULL }, | ||
| 1444 | { "ipv6addr", FR_CONF_OFFSET(PW_TYPE_IPV6_ADDR, home_server_t, ipaddr), NULL }, | ||
| 1445 | @@ -640,6 +643,9 @@ home_server_t *home_server_afrom_cs(TALLOC_CTX *ctx, realm_config_t *rc, CONF_SE | ||
| 1446 | home->cs = cs; | ||
| 1447 | home->state = HOME_STATE_UNKNOWN; | ||
| 1448 | home->proto = IPPROTO_UDP; | ||
| 1449 | + home->require_ma = main_config.require_ma; | ||
| 1450 | + | ||
| 1451 | + require_message_authenticator = false; | ||
| 1452 | |||
| 1453 | /* | ||
| 1454 | * Parse the configuration into the home server | ||
| 1455 | @@ -647,6 +653,10 @@ home_server_t *home_server_afrom_cs(TALLOC_CTX *ctx, realm_config_t *rc, CONF_SE | ||
| 1456 | */ | ||
| 1457 | if (cf_section_parse(cs, home, home_server_config) < 0) goto error; | ||
| 1458 | |||
| 1459 | + if (fr_bool_auto_parse(cf_pair_find(cs, "require_message_authenticator"), &home->require_ma, require_message_authenticator) < 0) { | ||
| 1460 | + goto error; | ||
| 1461 | + } | ||
| 1462 | + | ||
| 1463 | /* | ||
| 1464 | * It has an IP address, it must be a remote server. | ||
| 1465 | */ | ||
| 1466 | @@ -924,6 +934,7 @@ home_server_t *home_server_afrom_cs(TALLOC_CTX *ctx, realm_config_t *rc, CONF_SE | ||
| 1467 | * Parse the SSL client configuration. | ||
| 1468 | */ | ||
| 1469 | if (tls) { | ||
| 1470 | + home->require_ma = false; | ||
| 1471 | home->tls = tls_client_conf_parse(tls); | ||
| 1472 | if (!home->tls) { | ||
| 1473 | goto error; | ||
| 1474 | diff --git a/src/main/tls_listen.c b/src/main/tls_listen.c | ||
| 1475 | index 0eed87b64f..4ae3c5b975 100644 | ||
| 1476 | --- a/src/main/tls_listen.c | ||
| 1477 | +++ b/src/main/tls_listen.c | ||
| 1478 | @@ -299,6 +299,8 @@ get_application_data: | ||
| 1479 | packet->vps = NULL; | ||
| 1480 | PTHREAD_MUTEX_UNLOCK(&sock->mutex); | ||
| 1481 | |||
| 1482 | + packet->tls = true; | ||
| 1483 | + | ||
| 1484 | if (!rad_packet_ok(packet, 0, NULL)) { | ||
| 1485 | if (DEBUG_ENABLED) ERROR("Receive - %s", fr_strerror()); | ||
| 1486 | DEBUG("Closing TLS socket from client"); | ||
| 1487 | @@ -713,6 +715,8 @@ int proxy_tls_recv(rad_listen_t *listener) | ||
| 1488 | memcpy(packet->data, data, packet->data_len); | ||
| 1489 | memcpy(packet->vector, packet->data + 4, 16); | ||
| 1490 | |||
| 1491 | + packet->tls = true; | ||
| 1492 | + | ||
| 1493 | /* | ||
| 1494 | * FIXME: Client MIB updates? | ||
| 1495 | */ | ||
| 1496 | @@ -765,6 +769,7 @@ int proxy_tls_send(rad_listen_t *listener, REQUEST *request) | ||
| 1497 | * if there's no packet, encode it here. | ||
| 1498 | */ | ||
| 1499 | if (!request->proxy->data) { | ||
| 1500 | + request->reply->tls = true; | ||
| 1501 | request->proxy_listener->encode(request->proxy_listener, | ||
| 1502 | request); | ||
| 1503 | } | ||
| 1504 | -- | ||
| 1505 | 2.35.7 | ||
| 1506 | |||
diff --git a/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb b/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.27.bb index 01d23fdf83..27cc12c347 100644 --- a/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb +++ b/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.27.bb | |||
| @@ -16,31 +16,31 @@ DEPENDS = "openssl-native openssl libidn libtool libpcap libtalloc" | |||
| 16 | SRC_URI = "git://github.com/FreeRADIUS/freeradius-server.git;branch=v3.0.x;lfs=0;;protocol=https \ | 16 | SRC_URI = "git://github.com/FreeRADIUS/freeradius-server.git;branch=v3.0.x;lfs=0;;protocol=https \ |
| 17 | file://freeradius \ | 17 | file://freeradius \ |
| 18 | file://volatiles.58_radiusd \ | 18 | file://volatiles.58_radiusd \ |
| 19 | file://freeradius-enble-user-in-conf.patch \ | ||
| 20 | file://freeradius-configure.ac-allow-cross-compilation.patch \ | ||
| 21 | file://freeradius-libtool-detection.patch \ | ||
| 22 | file://freeradius-configure.ac-add-option-for-libcap.patch \ | ||
| 23 | file://freeradius-avoid-searching-host-dirs.patch \ | ||
| 24 | file://freeradius-rlm_python-add-PY_INC_DIR.patch \ | ||
| 25 | file://freeradius-libtool-do-not-use-jlibtool.patch \ | ||
| 26 | file://freeradius-fix-quoting-for-BUILT_WITH.patch \ | ||
| 27 | file://freeradius-fix-error-for-expansion-of-macro.patch \ | ||
| 28 | file://0001-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch \ | ||
| 29 | file://0001-raddb-certs-Makefile-fix-the-existed-certificate-err.patch \ | ||
| 30 | file://0001-raddb-certs-Makefile-fix-the-occasional-verification.patch \ | ||
| 31 | file://0001-workaround-error-with-autoconf-2.7.patch \ | ||
| 32 | file://radiusd.service \ | 19 | file://radiusd.service \ |
| 33 | file://radiusd-volatiles.conf \ | 20 | file://radiusd-volatiles.conf \ |
| 34 | file://check-openssl-cmds-in-script-bootstrap.patch \ | 21 | file://0001-Add-autogen.sh.patch \ |
| 35 | file://0001-version.c-don-t-print-build-flags.patch \ | 22 | file://0002-Enable-and-change-user-and-group-of-freeradius-serve.patch \ |
| 36 | file://CVE-2022-41860.patch \ | 23 | file://0003-configure.ac-allow-cross-compilation.patch \ |
| 37 | file://CVE-2022-41861.patch \ | 24 | file://0004-Fix-libtool-detection.patch \ |
| 38 | file://CVE-2024-3596.patch \ | 25 | file://0005-configure.ac-add-option-for-libcap.patch \ |
| 26 | file://0006-Avoid-searching-host-dirs.patch \ | ||
| 27 | file://0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch \ | ||
| 28 | file://0008-libtool-do-not-use-jlibtool.patch \ | ||
| 29 | file://0009-Fix-quoting-for-BUILD_WITH.patch \ | ||
| 30 | file://0010-fix-error-for-expansion-of-macro-in-thread.h.patch \ | ||
| 31 | file://0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch \ | ||
| 32 | file://0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch \ | ||
| 33 | file://0013-raddb-certs-Makefile-fix-the-occasional-verification.patch \ | ||
| 34 | file://0014-Workaround-error-with-autoconf-2.7.patch \ | ||
| 35 | file://0015-bootstrap-check-commands-of-openssl-exist.patch \ | ||
| 36 | file://0016-version.c-don-t-print-build-flags.patch \ | ||
| 39 | " | 37 | " |
| 40 | 38 | ||
| 41 | raddbdir="${sysconfdir}/${MLPREFIX}raddb" | 39 | raddbdir="${sysconfdir}/${MLPREFIX}raddb" |
| 42 | 40 | ||
| 43 | SRCREV = "af428abda249b2279ba0582180985a9f6f4a144a" | 41 | SRCREV = "f317c5b2668a4de7065df46b31267cd6ff32ddf1" |
| 42 | |||
| 43 | UPSTREAM_CHECK_GITTAGREGEX = "release_(?P<pver>\d+(\_\d+)+)" | ||
| 44 | 44 | ||
| 45 | CVE_CHECK_IGNORE = "\ | 45 | CVE_CHECK_IGNORE = "\ |
| 46 | CVE-2002-0318 \ | 46 | CVE-2002-0318 \ |
