public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/trafficserver] trafficserver-9.2.14-1: Update to 9.1.4, resolves CVE-2022-32749, CVE-2022-37392, CVE-2022-40743
@ 2026-07-15 17:21 Jered Floyd
0 siblings, 0 replies; only message in thread
From: Jered Floyd @ 2026-07-15 17:21 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/trafficserver
Branch : trafficserver-9.2.14-1
Commit : 318f40cc3370539ab736b42c86f92cf8c153636d
Author : Jered Floyd <jered@redhat.com>
Date : 2022-12-19T21:38:12+00:00
Stats : +8/-429 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/trafficserver/c/318f40cc3370539ab736b42c86f92cf8c153636d?branch=trafficserver-9.2.14-1
Log:
Update to 9.1.4, resolves CVE-2022-32749, CVE-2022-37392, CVE-2022-40743
---
diff --git a/openssl3-hkdf.patch b/openssl3-hkdf.patch
deleted file mode 100644
index d5eef2b..0000000
--- a/openssl3-hkdf.patch
+++ /dev/null
@@ -1,420 +0,0 @@
---- build/crypto.m4
-+++ build/crypto.m4
-@@ -58,6 +58,25 @@ int main() {
- [AC_MSG_FAILURE([requires an OpenSSL version 1.0.2 or greater])])
- ])
-
-+dnl
-+dnl Check OpenSSL Version 3
-+dnl
-+AC_DEFUN([TS_CHECK_OPENSSL3], [
-+ AC_MSG_CHECKING([for OpenSSL version 3])
-+ AC_RUN_IFELSE([AC_LANG_SOURCE(
-+ [
-+#include <openssl/opensslv.h>
-+int main() {
-+ if (OPENSSL_VERSION_NUMBER > 0x3000000fL) {
-+ return 0;
-+ }
-+ return 1;
-+}
-+ ])],
-+ [AC_MSG_RESULT(yes) TS_ADDTO(CPPFLAGS, -DOPENSSL_API_COMPAT=10002 -DOPENSSL_IS_OPENSSL3) openssl_is_openssl3=1], [AC_MSG_RESULT(no)]
-+ )
-+])
-+
- dnl
- dnl Since OpenSSL 1.1.0
- dnl
---- configure.ac
-+++ configure.ac
-@@ -1249,6 +1249,10 @@ TS_CHECK_CRYPTO
- # Check for OpenSSL Version
- TS_CHECK_CRYPTO_VERSION
-
-+# Check for OpenSSL Version 3 and add compatiblity define if needed
-+TS_CHECK_OPENSSL3
-+AM_CONDITIONAL([OPENSSL_IS_OPENSSL3], [test -n "$openssl_is_openssl3"])
-+
- # Check for openssl ASYNC jobs
- TS_CHECK_CRYPTO_ASYNC
-
---- include/tscore/HKDF.h
-+++ include/tscore/HKDF.h
-@@ -30,16 +30,25 @@
- #include <openssl/evp.h>
- #endif
-
-+#ifdef OPENSSL_IS_OPENSSL3
-+#include <openssl/core.h>
-+#endif
-+
- class HKDF
- {
- public:
-- HKDF(const EVP_MD *digest);
-+ HKDF(const char *digest);
- ~HKDF();
- int extract(uint8_t *dst, size_t *dst_len, const uint8_t *salt, size_t salt_len, const uint8_t *ikm, size_t ikm_len);
- int expand(uint8_t *dst, size_t *dst_len, const uint8_t *prk, size_t prk_len, const uint8_t *info, size_t info_len,
- uint16_t length);
-
- protected:
-- const EVP_MD *_digest = nullptr;
-- EVP_PKEY_CTX *_pctx = nullptr;
-+#ifdef OPENSSL_IS_OPENSSL3
-+ EVP_KDF_CTX *_kctx = nullptr;
-+ OSSL_PARAM params[5];
-+#else
-+ EVP_PKEY_CTX *_pctx = nullptr;
-+ const EVP_MD *_digest_md = nullptr;
-+#endif
- };
---- iocore/net/quic/QUICHKDF.h
-+++ iocore/net/quic/QUICHKDF.h
-@@ -28,7 +28,7 @@
- class QUICHKDF : public HKDF
- {
- public:
-- QUICHKDF(const EVP_MD *digest) : HKDF(digest) {}
-+ QUICHKDF(const char *digest) : HKDF(digest) {}
- int expand(uint8_t *dst, size_t *dst_len, const uint8_t *secret, size_t secret_len, const char *label, size_t label_len,
- uint16_t length);
- };
---- iocore/net/quic/QUICKeyGenerator.cc
-+++ iocore/net/quic/QUICKeyGenerator.cc
-@@ -49,7 +49,7 @@ void
- QUICKeyGenerator::generate(QUICVersion version, uint8_t *hp_key, uint8_t *pp_key, uint8_t *iv, size_t *iv_len, QUICConnectionId cid)
- {
- const EVP_CIPHER *cipher = this->_get_cipher_for_initial();
-- const EVP_MD *md = EVP_sha256();
-+ const char *md = "SHA256";
- uint8_t secret[512];
- size_t secret_len = sizeof(secret);
- QUICHKDF hkdf(md);
-@@ -57,7 +57,7 @@ QUICKeyGenerator::generate(QUICVersion version, uint8_t *hp_key, uint8_t *pp_key
- switch (this->_ctx) {
- case Context::CLIENT:
- this->_generate_initial_secret(version, secret, &secret_len, hkdf, cid, LABEL_FOR_CLIENT_INITIAL_SECRET.data(),
-- LABEL_FOR_CLIENT_INITIAL_SECRET.length(), EVP_MD_size(md));
-+ LABEL_FOR_CLIENT_INITIAL_SECRET.length(), EVP_MD_size(EVP_get_digestbyname(md)));
- if (is_debug_tag_set("vv_quic_crypto")) {
- uint8_t print_buf[1024 + 1];
- QUICDebug::to_hex(print_buf, secret, secret_len);
-@@ -67,7 +67,7 @@ QUICKeyGenerator::generate(QUICVersion version, uint8_t *hp_key, uint8_t *pp_key
- break;
- case Context::SERVER:
- this->_generate_initial_secret(version, secret, &secret_len, hkdf, cid, LABEL_FOR_SERVER_INITIAL_SECRET.data(),
-- LABEL_FOR_SERVER_INITIAL_SECRET.length(), EVP_MD_size(md));
-+ LABEL_FOR_SERVER_INITIAL_SECRET.length(), EVP_MD_size(EVP_get_digestbyname(md)));
- if (is_debug_tag_set("vv_quic_crypto")) {
- uint8_t print_buf[1024 + 1];
- QUICDebug::to_hex(print_buf, secret, secret_len);
---- iocore/net/quic/QUICTLS.h
-+++ iocore/net/quic/QUICTLS.h
-@@ -90,7 +90,7 @@ public:
- private:
- QUICKeyGenerator _keygen_for_client = QUICKeyGenerator(QUICKeyGenerator::Context::CLIENT);
- QUICKeyGenerator _keygen_for_server = QUICKeyGenerator(QUICKeyGenerator::Context::SERVER);
-- const EVP_MD *_get_handshake_digest() const;
-+ const char *_get_handshake_digest() const;
-
- int _read_early_data();
- int _write_early_data();
---- iocore/net/quic/QUICTLS_boringssl.cc
-+++ iocore/net/quic/QUICTLS_boringssl.cc
-@@ -352,15 +352,15 @@ QUICTLS::_pass_quic_data_to_ssl_impl(const QUICHandshakeMsgs &in)
- }
- }
-
--const EVP_MD *
-+const char *
- QUICTLS::_get_handshake_digest() const
- {
- switch (SSL_CIPHER_get_id(SSL_get_current_cipher(this->_ssl))) {
- case TLS1_CK_AES_128_GCM_SHA256:
- case TLS1_CK_CHACHA20_POLY1305_SHA256:
-- return EVP_sha256();
-+ return "SHA256";
- case TLS1_CK_AES_256_GCM_SHA384:
-- return EVP_sha384();
-+ return "SHA384";
- default:
- ink_assert(false);
- return nullptr;
---- iocore/net/quic/QUICTLS_openssl.cc
-+++ iocore/net/quic/QUICTLS_openssl.cc
-@@ -316,7 +316,7 @@ QUICTLS::_pass_quic_data_to_ssl_impl(const QUICHandshakeMsgs &in)
- }
- }
-
--const EVP_MD *
-+const char *
- QUICTLS::_get_handshake_digest() const
- {
- switch (SSL_CIPHER_get_id(SSL_get_current_cipher(this->_ssl))) {
-@@ -324,9 +324,9 @@ QUICTLS::_get_handshake_digest() const
- case TLS1_3_CK_CHACHA20_POLY1305_SHA256:
- case TLS1_3_CK_AES_128_CCM_SHA256:
- case TLS1_3_CK_AES_128_CCM_8_SHA256:
-- return EVP_sha256();
-+ return "SHA256";
- case TLS1_3_CK_AES_256_GCM_SHA384:
-- return EVP_sha384();
-+ return "SHA384";
- default:
- ink_assert(false);
- return nullptr;
---- plugins/experimental/access_control/unit_tests/test_utils.cc
-+++ plugins/experimental/access_control/unit_tests/test_utils.cc
-@@ -21,6 +21,7 @@
- * @brief Unit tests for functions used in utils.cc
- */
-
-+#include <openssl/opensslv.h>
- #include <catch.hpp> /* catch unit-test framework */
- #include "../utils.h"
- #include "../common.h"
-@@ -253,6 +254,13 @@ TEST_CASE("HMAC Digest: test various supported/unsupported types", "[MAC][access
- digests.push_back("ccf3230972bcf229fb3b16741495c74a72bbdd14");
- #endif
-
-+#ifdef OPENSSL_IS_OPENSSL3 // MD4, RIPEMD160 are deprecated in OpenSSL 3
-+ types.pop_front();
-+ digests.pop_front();
-+ types.pop_back();
-+ digests.pop_back();
-+#endif
-+
- StringList::iterator digestIter = digests.begin();
- for (String digestType : types) {
- size_t outLen = cryptoMessageDigestGet(digestType.c_str(), data.c_str(), data.length(), key.c_str(), key.length(), out,
---- src/tscore/HKDF_boringssl.cc
-+++ src/tscore/HKDF_boringssl.cc
-@@ -22,14 +22,18 @@
- */
- #include "tscore/HKDF.h"
- #include <openssl/hkdf.h>
-+#include <openssl/digest.h>
-
--HKDF::HKDF(const EVP_MD *digest) : _digest(digest) {}
-+HKDF::HKDF(const char *digest)
-+{
-+ this->_digest_md = EVP_get_digestbyname(digest);
-+}
- HKDF::~HKDF() {}
-
- int
- HKDF::extract(uint8_t *dst, size_t *dst_len, const uint8_t *salt, size_t salt_len, const uint8_t *ikm, size_t ikm_len)
- {
-- return HKDF_extract(dst, dst_len, this->_digest, ikm, ikm_len, salt, salt_len);
-+ return HKDF_extract(dst, dst_len, this->_digest_md, ikm, ikm_len, salt, salt_len);
- }
-
- int
-@@ -37,5 +41,5 @@ HKDF::expand(uint8_t *dst, size_t *dst_len, const uint8_t *prk, size_t prk_len,
- uint16_t length)
- {
- *dst_len = length;
-- return HKDF_expand(dst, length, this->_digest, prk, prk_len, info, info_len);
-+ return HKDF_expand(dst, length, this->_digest_md, prk, prk_len, info, info_len);
- }
---- src/tscore/HKDF_openssl.cc
-+++ src/tscore/HKDF_openssl.cc
-@@ -23,8 +23,9 @@
- #include "tscore/HKDF.h"
- #include <openssl/kdf.h>
-
--HKDF::HKDF(const EVP_MD *digest) : _digest(digest)
-+HKDF::HKDF(const char *digest)
- {
-+ this->_digest_md = EVP_get_digestbyname(digest);
- // XXX We cannot reuse pctx now due to a bug in OpenSSL
- // this->_pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, nullptr);
- }
-@@ -51,7 +52,7 @@ HKDF::extract(uint8_t *dst, size_t *dst_len, const uint8_t *salt, size_t salt_le
- if (EVP_PKEY_CTX_hkdf_mode(this->_pctx, EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY) != 1) {
- return -2;
- }
-- if (EVP_PKEY_CTX_set_hkdf_md(this->_pctx, this->_digest) != 1) {
-+ if (EVP_PKEY_CTX_set_hkdf_md(this->_pctx, this->_digest_md) != 1) {
- return -3;
- }
- if (EVP_PKEY_CTX_set1_hkdf_salt(this->_pctx, salt, salt_len) != 1) {
-@@ -84,7 +85,7 @@ HKDF::expand(uint8_t *dst, size_t *dst_len, const uint8_t *prk, size_t prk_len,
- if (EVP_PKEY_CTX_hkdf_mode(this->_pctx, EVP_PKEY_HKDEF_MODE_EXPAND_ONLY) != 1) {
- return -2;
- }
-- if (EVP_PKEY_CTX_set_hkdf_md(this->_pctx, this->_digest) != 1) {
-+ if (EVP_PKEY_CTX_set_hkdf_md(this->_pctx, this->_digest_md) != 1) {
- return -3;
- }
- if (EVP_PKEY_CTX_set1_hkdf_key(this->_pctx, prk, prk_len) != 1) {
---- /dev/null
-+++ src/tscore/HKDF_openssl3.cc
-@@ -0,0 +1,85 @@
-+/** @file
-+ *
-+ * HKDF utility (OpenSSL version)
-+ *
-+ * @section license License
-+ *
-+ * Licensed to the Apache Software Foundation (ASF) under one
-+ * or more contributor license agreements. See the NOTICE file
-+ * distributed with this work for additional information
-+ * regarding copyright ownership. The ASF licenses this file
-+ * to you under the Apache License, Version 2.0 (the
-+ * "License"); you may not use this file except in compliance
-+ * with the License. You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+#include "tscore/HKDF.h"
-+#include <openssl/kdf.h>
-+#include <cstring>
-+#include <openssl/core_names.h>
-+
-+HKDF::HKDF(const char *digest)
-+{
-+ EVP_KDF *kdf = EVP_KDF_fetch(NULL, "HKDF", NULL);
-+ this->_kctx = EVP_KDF_CTX_new(kdf);
-+ EVP_KDF_free(kdf);
-+ *params = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST, (char *)digest, strlen(digest));
-+}
-+
-+HKDF::~HKDF()
-+{
-+ EVP_KDF_CTX_free(this->_kctx);
-+ this->_kctx = nullptr;
-+}
-+
-+int
-+HKDF::extract(uint8_t *dst, size_t *dst_len, const uint8_t *salt, size_t salt_len, const uint8_t *ikm, size_t ikm_len)
-+{
-+ size_t keysize;
-+ int mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY;
-+ OSSL_PARAM *p = params + 1;
-+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, (uint8_t *)ikm, ikm_len);
-+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SALT, (uint8_t *)salt, salt_len);
-+ *p++ = OSSL_PARAM_construct_int(OSSL_KDF_PARAM_MODE, &mode);
-+ *p = OSSL_PARAM_construct_end();
-+
-+ EVP_KDF_CTX_set_params(_kctx, params);
-+ keysize = EVP_KDF_CTX_get_kdf_size(this->_kctx);
-+ if (*dst_len < keysize) {
-+ return -1;
-+ }
-+ if (EVP_KDF_derive(_kctx, dst, keysize, params) <= 0) {
-+ EVP_KDF_CTX_reset(this->_kctx);
-+ return -2;
-+ }
-+ *dst_len = keysize;
-+ EVP_KDF_CTX_reset(this->_kctx);
-+
-+ return 1;
-+}
-+
-+int
-+HKDF::expand(uint8_t *dst, size_t *dst_len, const uint8_t *prk, size_t prk_len, const uint8_t *info, size_t info_len,
-+ uint16_t length)
-+{
-+ int mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY;
-+ OSSL_PARAM *p = params + 1;
-+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, (uint8_t *)prk, prk_len);
-+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO, (uint8_t *)info, info_len);
-+ *p++ = OSSL_PARAM_construct_int(OSSL_KDF_PARAM_MODE, &mode);
-+ *p = OSSL_PARAM_construct_end();
-+ if (EVP_KDF_derive(_kctx, dst, length, params) <= 0) {
-+ return -1;
-+ }
-+ *dst_len = length;
-+ EVP_KDF_CTX_reset(this->_kctx);
-+
-+ return 1;
-+}
---- src/tscore/Makefile.am
-+++ src/tscore/Makefile.am
-@@ -126,8 +126,12 @@ if HAS_HKDF
- if OPENSSL_IS_BORINGSSL
- HKDF_impl = HKDF_boringssl.cc
- else
-+if OPENSSL_IS_OPENSSL3
-+HKDF_impl = HKDF_openssl3.cc
-+else
- HKDF_impl = HKDF_openssl.cc
- endif
-+endif
- libtscore_la_SOURCES += \
- $(HKDF_impl)
- endif
---- src/tscore/unit_tests/test_HKDF.cc
-+++ src/tscore/unit_tests/test_HKDF.cc
-@@ -54,7 +54,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha256());
-+ HKDF hkdf("SHA256");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -104,7 +104,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha256());
-+ HKDF hkdf("SHA256");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -140,7 +140,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha256());
-+ HKDF hkdf("SHA256");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -178,7 +178,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha1());
-+ HKDF hkdf("SHA1");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -226,7 +226,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha1());
-+ HKDF hkdf("SHA1");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -261,7 +261,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha1());
-+ HKDF hkdf("SHA1");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
-@@ -296,7 +296,7 @@ TEST_CASE("HKDF tests", "[hkdf]")
- uint8_t okm[256] = {0};
- size_t okm_len = sizeof(okm);
-
-- HKDF hkdf(EVP_sha1());
-+ HKDF hkdf("SHA1");
-
- // Extract
- CHECK(hkdf.extract(prk, &prk_len, salt, sizeof(salt), ikm, sizeof(ikm)) == 1);
diff --git a/sources b/sources
index f551804..fa741cc 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (trafficserver-9.1.3.tar.bz2) = 95365844692a12ae3d65d80a1c76c873af22be2d1b0284d22952cac1b3e6cd51180fa69697ef4b13be69689997145ed2af16cb236288420cd8a379dcaa6b7f4a
-SHA512 (trafficserver-9.1.3.tar.bz2.asc) = e9b4eded2ec6dec3f618f69ede666b965ccf89737ab6a974cd70d44f76a1d750d05b1fe56eb8a2a91970a34d1be18e9fcbf3eac24c6db2683948c0cdfdcaedf7
+SHA512 (trafficserver-9.1.4.tar.bz2) = f18aca66e444470738f6031366edc45db26942917e3fe8cba9fbb3b28173e01e06991aa9846e459047365946738931b1910719574c9c2afee72e4dfb30eab617
+SHA512 (trafficserver-9.1.4.tar.bz2.asc) = 72d54200db2fcf3b88dea1885b21b0c2092e71ac473eab46f9ff22fa1ec358efccc454619ec5a31174ab0b507180fb254377f2b9ed5e9b237c58f65b33c66e37
diff --git a/trafficserver.spec b/trafficserver.spec
index dc7fdd7..1668a55 100644
--- a/trafficserver.spec
+++ b/trafficserver.spec
@@ -3,8 +3,8 @@
%global selinuxtype targeted
Name: trafficserver
-Version: 9.1.3
-Release: 3%{?dist}
+Version: 9.1.4
+Release: 1%{?dist}
Summary: Fast, scalable and extensible HTTP/1.1 and HTTP/2 caching proxy server
License: ASL 2.0
@@ -30,14 +30,10 @@ Patch1: string-index-oob.patch
# Define standard config layout for Fedora/RHEL systems
# Upstream PR: https://github.com/apache/trafficserver/pull/8815
Patch2: config-layout-redhat.patch
-# Cherry-pick OpenSSL 3 compat (needed for EL9)
-# Upstream PR: https://github.com/apache/trafficserver/pull/8837
-# Upstream PR: https://github.com/apache/trafficserver/pull/8909
-Patch3: openssl3-hkdf.patch
# glibc 2.36 (Fedora 37) introduces mount.h conflict
# Change doc: https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
# Upstream PR: https://github.com/apache/trafficserver/pull/9027
-Patch4: glibc-2.36.patch
+Patch3: glibc-2.36.patch
# Upstream does not support 32-bit architectures:
# https://github.com/apache/trafficserver/issues/4432
@@ -310,6 +306,9 @@ fi
%changelog
+* Mon Dec 19 2022 Jered Floyd <jered@redhat.com> 9.1.4-1
+- Update to 9.1.4, resolves CVE-2022-32749, CVE-2022-37392, CVE-2022-40743
+
* Sun Sep 11 2022 Jered Floyd <jered@redhat.com> 9.1.3-2
- FTI on EL8 due to lack of libbrotli pkg; use RPM autodeps instead
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-15 17:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-15 17:21 [rpms/trafficserver] trafficserver-9.2.14-1: Update to 9.1.4, resolves CVE-2022-32749, CVE-2022-37392, CVE-2022-40743 Jered Floyd
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox