You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
4.3 KiB
92 lines
4.3 KiB
9 months ago
|
diff -up evolution-data-server-3.28.5/src/camel/camel-stream-buffer.c.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/camel-stream-buffer.c
|
||
|
--- evolution-data-server-3.28.5/src/camel/camel-stream-buffer.c.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/camel-stream-buffer.c 2020-07-23 10:26:57.962555350 +0200
|
||
|
@@ -524,3 +524,22 @@ camel_stream_buffer_read_line (CamelStre
|
||
|
|
||
|
return g_strdup ((gchar *) sbf->priv->linebuf);
|
||
|
}
|
||
|
+
|
||
|
+/*
|
||
|
+ * camel_stream_buffer_discard_cache:
|
||
|
+ * @sbf: a #CamelStreamBuffer
|
||
|
+ *
|
||
|
+ * Discards any cached data in the @sbf. The next read reads
|
||
|
+ * from the stream.
|
||
|
+ *
|
||
|
+ * Since: 3.28.5-14
|
||
|
+ */
|
||
|
+void
|
||
|
+camel_stream_buffer_discard_cache (CamelStreamBuffer *sbf)
|
||
|
+{
|
||
|
+ g_return_if_fail (CAMEL_IS_STREAM_BUFFER (sbf));
|
||
|
+
|
||
|
+ sbf->priv->ptr = sbf->priv->buf;
|
||
|
+ sbf->priv->end = sbf->priv->buf;
|
||
|
+ sbf->priv->ptr[0] = '\0';
|
||
|
+}
|
||
|
diff -up evolution-data-server-3.28.5/src/camel/camel-stream-buffer.h.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/camel-stream-buffer.h
|
||
|
--- evolution-data-server-3.28.5/src/camel/camel-stream-buffer.h.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/camel-stream-buffer.h 2020-07-23 10:26:57.963555348 +0200
|
||
|
@@ -93,6 +93,8 @@ gint camel_stream_buffer_gets (CamelStr
|
||
|
gchar * camel_stream_buffer_read_line (CamelStreamBuffer *sbf,
|
||
|
GCancellable *cancellable,
|
||
|
GError **error);
|
||
|
+void camel_stream_buffer_discard_cache
|
||
|
+ (CamelStreamBuffer *sbf);
|
||
|
|
||
|
G_END_DECLS
|
||
|
|
||
|
diff -up evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-store.c.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-store.c
|
||
|
--- evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-store.c.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-store.c 2020-07-23 10:26:57.963555348 +0200
|
||
|
@@ -208,6 +208,8 @@ connect_to_server (CamelService *service
|
||
|
|
||
|
if (tls_stream != NULL) {
|
||
|
camel_stream_set_base_stream (stream, tls_stream);
|
||
|
+ /* Truncate any left cached input from the insecure part of the session */
|
||
|
+ camel_pop3_stream_discard_cache (pop3_engine->stream);
|
||
|
g_object_unref (tls_stream);
|
||
|
} else {
|
||
|
g_prefix_error (
|
||
|
diff -up evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.c.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.c
|
||
|
--- evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.c.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.c 2020-07-23 10:26:57.963555348 +0200
|
||
|
@@ -457,3 +457,14 @@ camel_pop3_stream_getd (CamelPOP3Stream
|
||
|
|
||
|
return 1;
|
||
|
}
|
||
|
+
|
||
|
+void
|
||
|
+camel_pop3_stream_discard_cache (CamelPOP3Stream *is)
|
||
|
+{
|
||
|
+ if (is) {
|
||
|
+ is->ptr = is->end = is->buf;
|
||
|
+ is->lineptr = is->linebuf;
|
||
|
+ is->lineend = is->linebuf + CAMEL_POP3_STREAM_LINE_SIZE;
|
||
|
+ is->ptr[0] = '\n';
|
||
|
+ }
|
||
|
+}
|
||
|
diff -up evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.h.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.h
|
||
|
--- evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.h.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/providers/pop3/camel-pop3-stream.h 2020-07-23 10:26:57.963555348 +0200
|
||
|
@@ -87,6 +87,7 @@ gint camel_pop3_stream_getd (CamelPOP3
|
||
|
guint *len,
|
||
|
GCancellable *cancellable,
|
||
|
GError **error);
|
||
|
+void camel_pop3_stream_discard_cache (CamelPOP3Stream *is);
|
||
|
|
||
|
G_END_DECLS
|
||
|
|
||
|
diff -up evolution-data-server-3.28.5/src/camel/providers/smtp/camel-smtp-transport.c.CVE-2020-14928 evolution-data-server-3.28.5/src/camel/providers/smtp/camel-smtp-transport.c
|
||
|
--- evolution-data-server-3.28.5/src/camel/providers/smtp/camel-smtp-transport.c.CVE-2020-14928 2018-07-30 15:17:06.000000000 +0200
|
||
|
+++ evolution-data-server-3.28.5/src/camel/providers/smtp/camel-smtp-transport.c 2020-07-23 10:26:57.963555348 +0200
|
||
|
@@ -319,6 +319,8 @@ connect_to_server (CamelService *service
|
||
|
|
||
|
if (tls_stream != NULL) {
|
||
|
camel_stream_set_base_stream (stream, tls_stream);
|
||
|
+ /* Truncate any left cached input from the insecure part of the session */
|
||
|
+ camel_stream_buffer_discard_cache (transport->istream);
|
||
|
g_object_unref (tls_stream);
|
||
|
} else {
|
||
|
g_prefix_error (
|