Fix CVE-2022-2047 and CVE-2022-2048
This commit is contained in:
parent
bdccfb98e0
commit
431f7db383
326
CVE-2022-2047.patch
Normal file
326
CVE-2022-2047.patch
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
From: Markus Koschany <apo@debian.org>
|
||||||
|
Date: Wed, 17 Aug 2022 12:58:27 +0200
|
||||||
|
Subject: CVE-2022-2047
|
||||||
|
|
||||||
|
Origin: https://github.com/eclipse/jetty.project/pull/8146
|
||||||
|
---
|
||||||
|
.../java/org/eclipse/jetty/client/HttpRequest.java | 8 +-
|
||||||
|
.../eclipse/jetty/client/HttpClientURITest.java | 45 ++++++++++
|
||||||
|
.../main/java/org/eclipse/jetty/http/HttpURI.java | 25 +++++-
|
||||||
|
.../java/org/eclipse/jetty/http/HttpURITest.java | 95 ++++++++++++++++++++++
|
||||||
|
.../org/eclipse/jetty/proxy/ConnectHandler.java | 2 +-
|
||||||
|
.../java/org/eclipse/jetty/server/Request.java | 14 +++-
|
||||||
|
.../eclipse/jetty/server/HttpConnectionTest.java | 12 +--
|
||||||
|
7 files changed, 187 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java
|
||||||
|
index f6a453f..2d2afa0 100644
|
||||||
|
--- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java
|
||||||
|
+++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java
|
||||||
|
@@ -177,6 +177,8 @@ public class HttpRequest implements Request
|
||||||
|
String rawPath = uri.getRawPath();
|
||||||
|
if (rawPath == null)
|
||||||
|
rawPath = "";
|
||||||
|
+ if (!rawPath.startsWith("/"))
|
||||||
|
+ rawPath = "/" + rawPath;
|
||||||
|
this.path = rawPath;
|
||||||
|
String query = uri.getRawQuery();
|
||||||
|
if (query != null)
|
||||||
|
@@ -855,14 +857,14 @@ public class HttpRequest implements Request
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
- private URI newURI(String uri)
|
||||||
|
+ private URI newURI(String path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Handle specially the "OPTIONS *" case, since it is possible to create a URI from "*" (!).
|
||||||
|
- if ("*".equals(uri))
|
||||||
|
+ if ("*".equals(path))
|
||||||
|
return null;
|
||||||
|
- URI result = new URI(uri);
|
||||||
|
+ URI result = new URI(path);
|
||||||
|
return result.isOpaque() ? null : result;
|
||||||
|
}
|
||||||
|
catch (URISyntaxException x)
|
||||||
|
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java
|
||||||
|
index 9c43512..5a97bdd 100644
|
||||||
|
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java
|
||||||
|
+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java
|
||||||
|
@@ -189,7 +189,7 @@ public class HttpURI
|
||||||
|
_uri=uri;
|
||||||
|
|
||||||
|
if (HttpMethod.CONNECT.is(method))
|
||||||
|
- _path=uri;
|
||||||
|
+ parse(State.HOST, uri, 0, uri.length());
|
||||||
|
else
|
||||||
|
parse(uri.startsWith("/")?State.PATH:State.START,uri,0,uri.length());
|
||||||
|
}
|
||||||
|
@@ -720,17 +720,30 @@ public class HttpURI
|
||||||
|
*/
|
||||||
|
public void setAuthority(String host, int port)
|
||||||
|
{
|
||||||
|
+ if (host != null && !isPathValidForAuthority(_path))
|
||||||
|
+ throw new IllegalArgumentException("Relative path with authority");
|
||||||
|
_host=host;
|
||||||
|
_port=port;
|
||||||
|
_uri=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private boolean isPathValidForAuthority(String path)
|
||||||
|
+ {
|
||||||
|
+ if (path == null)
|
||||||
|
+ return true;
|
||||||
|
+ if (path.isEmpty() || "*".equals(path))
|
||||||
|
+ return true;
|
||||||
|
+ return path.startsWith("/");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/**
|
||||||
|
* @param path the path
|
||||||
|
*/
|
||||||
|
public void setPath(String path)
|
||||||
|
{
|
||||||
|
+ if (hasAuthority() && !isPathValidForAuthority(path))
|
||||||
|
+ throw new IllegalArgumentException("Relative path with authority");
|
||||||
|
_uri=null;
|
||||||
|
_path=path;
|
||||||
|
_decodedPath=null;
|
||||||
|
@@ -739,6 +752,8 @@ public class HttpURI
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
public void setPathQuery(String path)
|
||||||
|
{
|
||||||
|
+ if (hasAuthority() && !isPathValidForAuthority(path))
|
||||||
|
+ throw new IllegalArgumentException("Relative path with authority");
|
||||||
|
_uri=null;
|
||||||
|
_path=null;
|
||||||
|
_decodedPath=null;
|
||||||
|
@@ -747,7 +762,13 @@ public class HttpURI
|
||||||
|
if (path!=null)
|
||||||
|
parse(State.PATH,path,0,path.length());
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
+ private boolean hasAuthority()
|
||||||
|
+ {
|
||||||
|
+ return _host != null;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
public void setQuery(String query)
|
||||||
|
{
|
||||||
|
diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java
|
||||||
|
index 63a58cf..6c3e65f 100644
|
||||||
|
--- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java
|
||||||
|
+++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java
|
||||||
|
@@ -32,6 +32,15 @@ import java.nio.charset.StandardCharsets;
|
||||||
|
import org.eclipse.jetty.util.MultiMap;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
+import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
+import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
+import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
+import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
+import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
+import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
|
||||||
|
+
|
||||||
|
public class HttpURITest
|
||||||
|
{
|
||||||
|
@Test
|
||||||
|
@@ -100,6 +109,32 @@ public class HttpURITest
|
||||||
|
assertThat(uri.getPath(),is("/bar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ @Test
|
||||||
|
+ public void testCONNECT()
|
||||||
|
+ {
|
||||||
|
+ HttpURI uri = new HttpURI();
|
||||||
|
+
|
||||||
|
+ uri.parseRequestTarget("CONNECT", "host:80");
|
||||||
|
+ assertThat(uri.getHost(), is("host"));
|
||||||
|
+ assertThat(uri.getPort(), is(80));
|
||||||
|
+ assertThat(uri.getPath(), nullValue());
|
||||||
|
+
|
||||||
|
+ uri.parseRequestTarget("CONNECT", "host");
|
||||||
|
+ assertThat(uri.getHost(), is("host"));
|
||||||
|
+ assertThat(uri.getPort(), is(-1));
|
||||||
|
+ assertThat(uri.getPath(), nullValue());
|
||||||
|
+
|
||||||
|
+ uri.parseRequestTarget("CONNECT", "192.168.0.1:8080");
|
||||||
|
+ assertThat(uri.getHost(), is("192.168.0.1"));
|
||||||
|
+ assertThat(uri.getPort(), is(8080));
|
||||||
|
+ assertThat(uri.getPath(), nullValue());
|
||||||
|
+
|
||||||
|
+ uri.parseRequestTarget("CONNECT", "[::1]:8080");
|
||||||
|
+ assertThat(uri.getHost(), is("[::1]"));
|
||||||
|
+ assertThat(uri.getPort(), is(8080));
|
||||||
|
+ assertThat(uri.getPath(), nullValue());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
@Test
|
||||||
|
public void testExtB() throws Exception
|
||||||
|
{
|
||||||
|
@@ -222,4 +257,64 @@ public class HttpURITest
|
||||||
|
assertEquals(uri.getAuthority(), "example.com:8888");
|
||||||
|
assertEquals(uri.getUser(), "user:password");
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ @Test
|
||||||
|
+ public void testRelativePathWithAuthority()
|
||||||
|
+ {
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setAuthority("host", 0);
|
||||||
|
+ httpURI.setPath("path");
|
||||||
|
+ });
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setAuthority("host", 8080);
|
||||||
|
+ httpURI.setPath(";p=v/url");
|
||||||
|
+ });
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setAuthority("host", 0);
|
||||||
|
+ httpURI.setPath(";");
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setPath("path");
|
||||||
|
+ httpURI.setAuthority("host", 0);
|
||||||
|
+ });
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setPath(";p=v/url");
|
||||||
|
+ httpURI.setAuthority("host", 8080);
|
||||||
|
+ });
|
||||||
|
+ assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
+ {
|
||||||
|
+ HttpURI httpURI = new HttpURI();
|
||||||
|
+ httpURI.setPath(";");
|
||||||
|
+ httpURI.setAuthority("host", 0);
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ HttpURI uri = new HttpURI();
|
||||||
|
+ uri.setPath("*");
|
||||||
|
+ uri.setAuthority("host", 0);
|
||||||
|
+ assertEquals("//host*", uri.toString());
|
||||||
|
+ uri = new HttpURI();
|
||||||
|
+ uri.setAuthority("host", 0);
|
||||||
|
+ uri.setPath("*");
|
||||||
|
+ assertEquals("//host*", uri.toString());
|
||||||
|
+
|
||||||
|
+ uri = new HttpURI();
|
||||||
|
+ uri.setPath("");
|
||||||
|
+ uri.setAuthority("host", 0);
|
||||||
|
+ assertEquals("//host", uri.toString());
|
||||||
|
+ uri = new HttpURI();
|
||||||
|
+ uri.setAuthority("host", 0);
|
||||||
|
+ uri.setPath("");
|
||||||
|
+ assertEquals("//host", uri.toString());
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
|
||||||
|
index 6b7d39e..d3dd5c8 100644
|
||||||
|
--- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
|
||||||
|
+++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
|
||||||
|
@@ -197,7 +197,7 @@ public class ConnectHandler extends HandlerWrapper
|
||||||
|
{
|
||||||
|
if (HttpMethod.CONNECT.is(request.getMethod()))
|
||||||
|
{
|
||||||
|
- String serverAddress = request.getRequestURI();
|
||||||
|
+ String serverAddress = baseRequest.getHttpURI().getAuthority();
|
||||||
|
if (LOG.isDebugEnabled())
|
||||||
|
LOG.debug("CONNECT request for {}", serverAddress);
|
||||||
|
|
||||||
|
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
|
||||||
|
index b15bcc7..5b996bb 100644
|
||||||
|
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
|
||||||
|
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
|
||||||
|
@@ -1778,9 +1778,19 @@ public class Request implements HttpServletRequest
|
||||||
|
|
||||||
|
setMethod(request.getMethod());
|
||||||
|
HttpURI uri = request.getURI();
|
||||||
|
- _originalURI = uri.isAbsolute()&&request.getHttpVersion()!=HttpVersion.HTTP_2?uri.toString():uri.getPathQuery();
|
||||||
|
+ String encoded;
|
||||||
|
+ if (HttpMethod.CONNECT.is(request.getMethod()))
|
||||||
|
+ {
|
||||||
|
+ _originalURI = uri.getAuthority();
|
||||||
|
+ encoded = "/";
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ _originalURI = uri.isAbsolute() && request.getHttpVersion() != HttpVersion.HTTP_2 ? uri.toString() : uri.getPathQuery();
|
||||||
|
+ encoded = uri.getPath();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
|
||||||
|
- String encoded = uri.getPath();
|
||||||
|
String path;
|
||||||
|
if (encoded==null)
|
||||||
|
{
|
||||||
|
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
|
||||||
|
index 918a112..22391f7 100644
|
||||||
|
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
|
||||||
|
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
|
||||||
|
@@ -365,7 +365,7 @@ public class HttpConnectionTest
|
||||||
|
public void testBadPathDotDotPath() throws Exception
|
||||||
|
{
|
||||||
|
String response=connector.getResponse("GET /ooops/../../path HTTP/1.0\r\nHost: localhost:80\r\n\n");
|
||||||
|
- checkContains(response,0,"HTTP/1.1 400 Bad URI");
|
||||||
|
+ checkContains(response,0,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@@ -380,28 +380,28 @@ public class HttpConnectionTest
|
||||||
|
public void testBadPathEncodedDotDotPath() throws Exception
|
||||||
|
{
|
||||||
|
String response=connector.getResponse("GET /ooops/%2e%2e/%2e%2e/path HTTP/1.0\r\nHost: localhost:80\r\n\n");
|
||||||
|
- checkContains(response,0,"HTTP/1.1 400 Bad URI");
|
||||||
|
+ checkContains(response,0,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBadDotDotPath() throws Exception
|
||||||
|
{
|
||||||
|
String response=connector.getResponse("GET ../path HTTP/1.0\r\nHost: localhost:80\r\n\n");
|
||||||
|
- checkContains(response,0,"HTTP/1.1 400 Bad URI");
|
||||||
|
+ checkContains(response,0,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBadSlashDotDotPath() throws Exception
|
||||||
|
{
|
||||||
|
String response=connector.getResponse("GET /../path HTTP/1.0\r\nHost: localhost:80\r\n\n");
|
||||||
|
- checkContains(response,0,"HTTP/1.1 400 Bad URI");
|
||||||
|
+ checkContains(response,0,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEncodedBadDotDotPath() throws Exception
|
||||||
|
{
|
||||||
|
String response=connector.getResponse("GET %2e%2e/path HTTP/1.0\r\nHost: localhost:80\r\n\n");
|
||||||
|
- checkContains(response,0,"HTTP/1.1 400 Bad URI");
|
||||||
|
+ checkContains(response,0,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@@ -1168,7 +1168,7 @@ public class HttpConnectionTest
|
||||||
|
"12345\r\n"+
|
||||||
|
"0;\r\n" +
|
||||||
|
"\r\n");
|
||||||
|
- checkContains(response,offset,"HTTP/1.1 400 Bad Request");
|
||||||
|
+ checkContains(response,offset,"HTTP/1.1 400");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
47
CVE-2022-2048.patch
Normal file
47
CVE-2022-2048.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From: Markus Koschany <apo@debian.org>
|
||||||
|
Date: Wed, 17 Aug 2022 12:59:00 +0200
|
||||||
|
Subject: CVE-2022-2048
|
||||||
|
|
||||||
|
Origin: https://github.com/eclipse/jetty.project/issues/7935
|
||||||
|
---
|
||||||
|
.../jetty/http2/server/HttpChannelOverHTTP2.java | 12 +-
|
||||||
|
.../org/eclipse/jetty/http2/server/BadURITest.java | 153 +++++++++++++++++++++
|
||||||
|
2 files changed, 157 insertions(+), 8 deletions(-)
|
||||||
|
create mode 100644 jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java
|
||||||
|
|
||||||
|
diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
|
||||||
|
index 03b082e..3548497 100644
|
||||||
|
--- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
|
||||||
|
+++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
|
||||||
|
@@ -143,13 +143,11 @@ public class HttpChannelOverHTTP2 extends HttpChannel implements Closeable, Writ
|
||||||
|
}
|
||||||
|
catch (BadMessageException x)
|
||||||
|
{
|
||||||
|
- onBadMessage(x);
|
||||||
|
- return null;
|
||||||
|
+ return () -> onBadMessage(x);
|
||||||
|
}
|
||||||
|
catch (Throwable x)
|
||||||
|
{
|
||||||
|
- onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x));
|
||||||
|
- return null;
|
||||||
|
+ return () -> onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -175,13 +173,11 @@ public class HttpChannelOverHTTP2 extends HttpChannel implements Closeable, Writ
|
||||||
|
}
|
||||||
|
catch (BadMessageException x)
|
||||||
|
{
|
||||||
|
- onBadMessage(x);
|
||||||
|
- return null;
|
||||||
|
+ return () -> onBadMessage(x);
|
||||||
|
}
|
||||||
|
catch (Throwable x)
|
||||||
|
{
|
||||||
|
- onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x));
|
||||||
|
- return null;
|
||||||
|
+ return () -> onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -12,7 +12,7 @@
|
|||||||
%bcond_with jp_minimal
|
%bcond_with jp_minimal
|
||||||
Name: jetty
|
Name: jetty
|
||||||
Version: 9.4.16
|
Version: 9.4.16
|
||||||
Release: 1
|
Release: 2
|
||||||
Summary: Java Webserver and Servlet Container
|
Summary: Java Webserver and Servlet Container
|
||||||
License: ASL 2.0 or EPL-1.0 or EPL-2.0
|
License: ASL 2.0 or EPL-1.0 or EPL-2.0
|
||||||
URL: http://www.eclipse.org/jetty/
|
URL: http://www.eclipse.org/jetty/
|
||||||
@ -26,6 +26,8 @@ Patch1: CVE-2020-27223.patch
|
|||||||
Patch2: CVE-2021-28165.patch
|
Patch2: CVE-2021-28165.patch
|
||||||
Patch3: CVE-2021-28169.patch
|
Patch3: CVE-2021-28169.patch
|
||||||
Patch4: CVE-2021-34428.patch
|
Patch4: CVE-2021-34428.patch
|
||||||
|
Patch5: CVE-2022-2047.patch
|
||||||
|
Patch6: CVE-2022-2048.patch
|
||||||
|
|
||||||
BuildRequires: maven-local mvn(javax.servlet:javax.servlet-api)
|
BuildRequires: maven-local mvn(javax.servlet:javax.servlet-api)
|
||||||
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
|
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
|
||||||
@ -785,6 +787,9 @@ exit 0
|
|||||||
%license LICENSE NOTICE.txt LICENSE-MIT
|
%license LICENSE NOTICE.txt LICENSE-MIT
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 28 2022 jiangpeng <jiangpeng01@ncti-gba.cn> - 9.4.16-2
|
||||||
|
- Fix CVE-2022-2047 and CVE-2022-2048
|
||||||
|
|
||||||
* Tue Sep 13 2022 liangqifeng <liangqifeng@ncti-gba.cn> - 9.4.16-1
|
* Tue Sep 13 2022 liangqifeng <liangqifeng@ncti-gba.cn> - 9.4.16-1
|
||||||
- update to 9.4.14 to Fix CVE-2019-10241
|
- update to 9.4.14 to Fix CVE-2019-10241
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user