Compare commits
No commits in common. "c8" and "c10s" have entirely different histories.
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
||||
SOURCES/libsoup-2.62.3.tar.xz
|
@ -1 +0,0 @@
|
||||
8b9c743348b1f9fc044c6abf3431899154e93ad1 SOURCES/libsoup-2.62.3.tar.xz
|
@ -1,95 +0,0 @@
|
||||
From d9c729aa5a7991182fa7bdb8d94442f8f0cf055b Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garcia Campos <cgarcia@igalia.com>
|
||||
Date: Fri, 19 Jul 2019 14:56:05 +0200
|
||||
Subject: [PATCH] WebSockets: ignore any messages after close has been sent and
|
||||
received
|
||||
|
||||
We currently ignore data frames when close has been received, but we
|
||||
should also ignore any frame after close has been sent and received.
|
||||
Currently, if we receive two close frames we end up with the code and
|
||||
reason of the second frame, while the RFC says: "The WebSocket
|
||||
Connection Close Code is defined as the status code contained in the
|
||||
first Close control frame received by the application implementing
|
||||
this protocol."
|
||||
---
|
||||
libsoup/soup-websocket-connection.c | 3 ++
|
||||
tests/websocket-test.c | 48 +++++++++++++++++++++++++++++
|
||||
2 files changed, 51 insertions(+)
|
||||
|
||||
diff --git libsoup/soup-websocket-connection.c libsoup/soup-websocket-connection.c
|
||||
--- a/libsoup/soup-websocket-connection.c
|
||||
+++ b/libsoup/soup-websocket-connection.c
|
||||
@@ -690,6 +690,9 @@
|
||||
SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
GBytes *message;
|
||||
|
||||
+ if (pv->close_sent && pv->close_received)
|
||||
+ return;
|
||||
+
|
||||
if (control) {
|
||||
/* Control frames must never be fragmented */
|
||||
if (!fin) {
|
||||
--- a/tests/websocket-test.c
|
||||
+++ b/tests/websocket-test.c
|
||||
@@ -707,6 +707,49 @@
|
||||
}
|
||||
|
||||
static gpointer
|
||||
+close_after_close_server_thread (gpointer user_data)
|
||||
+{
|
||||
+ Test *test = user_data;
|
||||
+ gsize written;
|
||||
+ const char frames[] =
|
||||
+ "\x88\x09\x03\xe8""reason1"
|
||||
+ "\x88\x09\x03\xe8""reason2";
|
||||
+ GError *error = NULL;
|
||||
+
|
||||
+ g_mutex_lock (&test->mutex);
|
||||
+ g_mutex_unlock (&test->mutex);
|
||||
+
|
||||
+ g_output_stream_write_all (g_io_stream_get_output_stream (test->raw_server),
|
||||
+ frames, sizeof (frames) -1, &written, NULL, &error);
|
||||
+ g_assert_no_error (error);
|
||||
+ g_assert_cmpuint (written, ==, sizeof (frames) - 1);
|
||||
+ g_io_stream_close (test->raw_server, NULL, &error);
|
||||
+ g_assert_no_error (error);
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+test_close_after_close (Test *test,
|
||||
+ gconstpointer data)
|
||||
+{
|
||||
+ GThread *thread;
|
||||
+
|
||||
+ g_mutex_lock (&test->mutex);
|
||||
+
|
||||
+ thread = g_thread_new ("close-after-close-thread", close_after_close_server_thread, test);
|
||||
+
|
||||
+ soup_websocket_connection_close (test->client, SOUP_WEBSOCKET_CLOSE_NORMAL, "reason1");
|
||||
+ g_mutex_unlock (&test->mutex);
|
||||
+
|
||||
+ g_thread_join (thread);
|
||||
+
|
||||
+ WAIT_UNTIL (soup_websocket_connection_get_state (test->client) == SOUP_WEBSOCKET_STATE_CLOSED);
|
||||
+ g_assert_cmpuint (soup_websocket_connection_get_close_code (test->client), ==, SOUP_WEBSOCKET_CLOSE_NORMAL);
|
||||
+ g_assert_cmpstr (soup_websocket_connection_get_close_data (test->client), ==, "reason1");
|
||||
+}
|
||||
+
|
||||
+static gpointer
|
||||
timeout_server_thread (gpointer user_data)
|
||||
{
|
||||
Test *test = user_data;
|
||||
@@ -918,6 +961,11 @@
|
||||
test_message_after_closing,
|
||||
teardown_soup_connection);
|
||||
|
||||
+ g_test_add ("/websocket/direct/close-after-close", Test, NULL,
|
||||
+ setup_half_direct_connection,
|
||||
+ test_close_after_close,
|
||||
+ teardown_direct_connection);
|
||||
+
|
||||
|
||||
g_test_add ("/websocket/direct/protocol-negotiate", Test, NULL, NULL,
|
||||
test_protocol_negotiate_direct,
|
@ -1,152 +0,0 @@
|
||||
From 109bb2f692c746bc63a0ade8737b584aecb0b1ad Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garcia Campos <cgarcia@igalia.com>
|
||||
Date: Thu, 27 Jun 2019 16:03:21 +0200
|
||||
Subject: [PATCH] WebSockets: allow null characters in text messages data
|
||||
|
||||
RFC 6455 says that text messages should contains valid UTF-8, and null
|
||||
characters valid according to RFC 3629. However, we are using
|
||||
g_utf8_validate(), which considers null characters as errors, to
|
||||
validate WebSockets text messages. This patch adds an internal
|
||||
utf8_validate() function based on g_utf8_validate() but allowing null
|
||||
characters and just returning a gboolean since we are always ignoring
|
||||
the end parameter in case of errors.
|
||||
soup_websocket_connection_send_text() assumes the given text is null
|
||||
terminated, so we need a new public function to allow sending text
|
||||
messages containing null characters. This patch adds
|
||||
soup_websocket_connection_send_message() that receives a
|
||||
SoupWebsocketDataType and GBytes, which is consistent with
|
||||
SoupWebsocketConnection::message signal.
|
||||
|
||||
For RHEL backport, drop the addition of soup_websocket_connection_send_message()
|
||||
as we don't need it and don't want to expose new API.
|
||||
diff --git libsoup/soup-websocket-connection.c libsoup/soup-websocket-connection.c
|
||||
index 66bd6871..67a98731 100644
|
||||
--- a/libsoup/soup-websocket-connection.c
|
||||
+++ b/libsoup/soup-websocket-connection.c
|
||||
@@ -155,6 +155,82 @@
|
||||
|
||||
static void protocol_error_and_close (SoupWebsocketConnection *self);
|
||||
|
||||
+/* Code below is based on g_utf8_validate() implementation,
|
||||
+ * but handling NULL characters as valid, as expected by
|
||||
+ * WebSockets and compliant with RFC 3629.
|
||||
+ */
|
||||
+#define VALIDATE_BYTE(mask, expect) \
|
||||
+ G_STMT_START { \
|
||||
+ if (G_UNLIKELY((*(guchar *)p & (mask)) != (expect))) \
|
||||
+ return FALSE; \
|
||||
+ } G_STMT_END
|
||||
+
|
||||
+/* see IETF RFC 3629 Section 4 */
|
||||
+static gboolean
|
||||
+utf8_validate (const char *str,
|
||||
+ gsize max_len)
|
||||
+
|
||||
+{
|
||||
+ const gchar *p;
|
||||
+
|
||||
+ for (p = str; ((p - str) < max_len); p++) {
|
||||
+ if (*(guchar *)p < 128)
|
||||
+ /* done */;
|
||||
+ else {
|
||||
+ if (*(guchar *)p < 0xe0) { /* 110xxxxx */
|
||||
+ if (G_UNLIKELY (max_len - (p - str) < 2))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (G_UNLIKELY (*(guchar *)p < 0xc2))
|
||||
+ return FALSE;
|
||||
+ } else {
|
||||
+ if (*(guchar *)p < 0xf0) { /* 1110xxxx */
|
||||
+ if (G_UNLIKELY (max_len - (p - str) < 3))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ switch (*(guchar *)p++ & 0x0f) {
|
||||
+ case 0:
|
||||
+ VALIDATE_BYTE(0xe0, 0xa0); /* 0xa0 ... 0xbf */
|
||||
+ break;
|
||||
+ case 0x0d:
|
||||
+ VALIDATE_BYTE(0xe0, 0x80); /* 0x80 ... 0x9f */
|
||||
+ break;
|
||||
+ default:
|
||||
+ VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */
|
||||
+ }
|
||||
+ } else if (*(guchar *)p < 0xf5) { /* 11110xxx excluding out-of-range */
|
||||
+ if (G_UNLIKELY (max_len - (p - str) < 4))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ switch (*(guchar *)p++ & 0x07) {
|
||||
+ case 0:
|
||||
+ VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */
|
||||
+ if (G_UNLIKELY((*(guchar *)p & 0x30) == 0))
|
||||
+ return FALSE;
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ VALIDATE_BYTE(0xf0, 0x80); /* 0x80 ... 0x8f */
|
||||
+ break;
|
||||
+ default:
|
||||
+ VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */
|
||||
+ }
|
||||
+ p++;
|
||||
+ VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */
|
||||
+ } else {
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ p++;
|
||||
+ VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+#undef VALIDATE_BYTE
|
||||
+
|
||||
static void
|
||||
frame_free (gpointer data)
|
||||
{
|
||||
@@ -629,7 +705,7 @@
|
||||
data += 2;
|
||||
len -= 2;
|
||||
|
||||
- if (!g_utf8_validate ((char *)data, len, NULL)) {
|
||||
+ if (!utf8_validate ((const char *)data, len)) {
|
||||
g_debug ("received non-UTF8 close data: %d '%.*s' %d", (int)len, (int)len, (char *)data, (int)data[0]);
|
||||
protocol_error_and_close (self);
|
||||
return;
|
||||
@@ -777,9 +853,8 @@
|
||||
/* Actually deliver the message? */
|
||||
if (fin) {
|
||||
if (pv->message_opcode == 0x01 &&
|
||||
- !g_utf8_validate((char *)pv->message_data->data,
|
||||
- pv->message_data->len,
|
||||
- NULL)) {
|
||||
+ !utf8_validate((const char *)pv->message_data->data,
|
||||
+ pv->message_data->len)) {
|
||||
|
||||
g_debug ("received invalid non-UTF8 text data");
|
||||
|
||||
@@ -1699,7 +1774,9 @@
|
||||
* @self: the WebSocket
|
||||
* @text: the message contents
|
||||
*
|
||||
- * Send a text (UTF-8) message to the peer.
|
||||
+ * Send a %NULL-terminated text (UTF-8) message to the peer. If you need
|
||||
+ * to send text messages containing %NULL characters use
|
||||
+ * soup_websocket_connection_send_message() instead.
|
||||
*
|
||||
* The message is queued to be sent and will be sent when the main loop
|
||||
* is run.
|
||||
@@ -1717,7 +1794,7 @@
|
||||
g_return_if_fail (text != NULL);
|
||||
|
||||
length = strlen (text);
|
||||
- g_return_if_fail (g_utf8_validate (text, length, NULL));
|
||||
+ g_return_if_fail (utf8_validate (text, length));
|
||||
|
||||
send_message (self, SOUP_WEBSOCKET_QUEUE_NORMAL, 0x01, (const guint8 *) text, length);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,299 +0,0 @@
|
||||
From 35f1bac5ff9ec694e64b65e51f0e7a3226aa3aaf Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garcia Campos <cgarcia@igalia.com>
|
||||
Date: Wed, 28 Aug 2019 10:51:18 +0200
|
||||
Subject: [PATCH] WebSockets: only poll IO stream when needed
|
||||
|
||||
Instead of having two pollable sources constantly running, always try to
|
||||
read/write without blocking and start polling if the operation returns
|
||||
G_IO_ERROR_WOULD_BLOCK. This patch also fixes test
|
||||
/websocket/direct/close-after-close that was passing but not actually
|
||||
testing what we wanted, because the client close was never sent. When
|
||||
the mutex is released, the frame has been queued, but not sent.
|
||||
|
||||
diff --git libsoup/soup-websocket-connection.c libsoup/soup-websocket-connection.c
|
||||
index 345040fe..6afbbe67 100644
|
||||
--- a/libsoup/soup-websocket-connection.c
|
||||
+++ b/libsoup/soup-websocket-connection.c
|
||||
@@ -147,6 +147,7 @@
|
||||
};
|
||||
|
||||
#define MAX_INCOMING_PAYLOAD_SIZE_DEFAULT 128 * 1024
|
||||
+#define READ_BUFFER_SIZE 1024
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (SoupWebsocketConnection, soup_websocket_connection, G_TYPE_OBJECT)
|
||||
|
||||
@@ -155,6 +156,11 @@
|
||||
|
||||
static void protocol_error_and_close (SoupWebsocketConnection *self);
|
||||
|
||||
+static gboolean on_web_socket_input (GObject *pollable_stream,
|
||||
+ gpointer user_data);
|
||||
+static gboolean on_web_socket_output (GObject *pollable_stream,
|
||||
+ gpointer user_data);
|
||||
+
|
||||
/* Code below is based on g_utf8_validate() implementation,
|
||||
* but handling NULL characters as valid, as expected by
|
||||
* WebSockets and compliant with RFC 3629.
|
||||
@@ -283,7 +289,20 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-stop_input (SoupWebsocketConnection *self)
|
||||
+soup_websocket_connection_start_input_source (SoupWebsocketConnection *self)
|
||||
+{
|
||||
+ SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
+
|
||||
+ if (pv->input_source)
|
||||
+ return;
|
||||
+
|
||||
+ pv->input_source = g_pollable_input_stream_create_source (pv->input, NULL);
|
||||
+ g_source_set_callback (pv->input_source, (GSourceFunc)on_web_socket_input, self, NULL);
|
||||
+ g_source_attach (pv->input_source, pv->main_context);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+soup_websocket_connection_stop_input_source (SoupWebsocketConnection *self)
|
||||
{
|
||||
SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
|
||||
@@ -296,7 +315,20 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-stop_output (SoupWebsocketConnection *self)
|
||||
+soup_websocket_connection_start_output_source (SoupWebsocketConnection *self)
|
||||
+{
|
||||
+ SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
+
|
||||
+ if (pv->output_source)
|
||||
+ return;
|
||||
+
|
||||
+ pv->output_source = g_pollable_output_stream_create_source (pv->output, NULL);
|
||||
+ g_source_set_callback (pv->output_source, (GSourceFunc)on_web_socket_output, self, NULL);
|
||||
+ g_source_attach (pv->output_source, pv->main_context);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+soup_websocket_connection_stop_output_source (SoupWebsocketConnection *self)
|
||||
{
|
||||
SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
|
||||
@@ -341,8 +373,8 @@
|
||||
close_io_stop_timeout (self);
|
||||
|
||||
if (!pv->io_closing) {
|
||||
- stop_input (self);
|
||||
- stop_output (self);
|
||||
+ soup_websocket_connection_stop_input_source (self);
|
||||
+ soup_websocket_connection_stop_output_source (self);
|
||||
pv->io_closing = TRUE;
|
||||
g_debug ("closing io stream");
|
||||
g_io_stream_close_async (pv->io_stream, G_PRIORITY_DEFAULT,
|
||||
@@ -359,7 +391,7 @@
|
||||
GSocket *socket;
|
||||
GError *error = NULL;
|
||||
|
||||
- stop_output (self);
|
||||
+ soup_websocket_connection_stop_output_source (self);
|
||||
|
||||
if (G_IS_SOCKET_CONNECTION (pv->io_stream)) {
|
||||
socket = g_socket_connection_get_socket (G_SOCKET_CONNECTION (pv->io_stream));
|
||||
@@ -612,9 +644,6 @@
|
||||
self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ? "server" : "client",
|
||||
payload_len, self->pv->max_incoming_payload_size);
|
||||
emit_error_and_close (self, error, TRUE);
|
||||
-
|
||||
- /* The input is in an invalid state now */
|
||||
- stop_input (self);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -981,32 +1010,31 @@
|
||||
;
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-on_web_socket_input (GObject *pollable_stream,
|
||||
- gpointer user_data)
|
||||
+static void
|
||||
+soup_websocket_connection_read (SoupWebsocketConnection *self)
|
||||
{
|
||||
- SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (user_data);
|
||||
SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
GError *error = NULL;
|
||||
gboolean end = FALSE;
|
||||
gssize count;
|
||||
gsize len;
|
||||
|
||||
+ soup_websocket_connection_stop_input_source (self);
|
||||
+
|
||||
do {
|
||||
len = pv->incoming->len;
|
||||
- g_byte_array_set_size (pv->incoming, len + 1024);
|
||||
+ g_byte_array_set_size (pv->incoming, len + READ_BUFFER_SIZE);
|
||||
|
||||
count = g_pollable_input_stream_read_nonblocking (pv->input,
|
||||
pv->incoming->data + len,
|
||||
- 1024, NULL, &error);
|
||||
-
|
||||
+ READ_BUFFER_SIZE, NULL, &error);
|
||||
if (count < 0) {
|
||||
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
|
||||
g_error_free (error);
|
||||
count = 0;
|
||||
} else {
|
||||
emit_error_and_close (self, error, TRUE);
|
||||
- return TRUE;
|
||||
+ return;
|
||||
}
|
||||
} else if (count == 0) {
|
||||
end = TRUE;
|
||||
@@ -1026,16 +1054,24 @@
|
||||
}
|
||||
|
||||
close_io_stream (self);
|
||||
+ return;
|
||||
}
|
||||
|
||||
- return TRUE;
|
||||
+ soup_websocket_connection_start_input_source (self);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-on_web_socket_output (GObject *pollable_stream,
|
||||
- gpointer user_data)
|
||||
+on_web_socket_input (GObject *pollable_stream,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ soup_websocket_connection_read (SOUP_WEBSOCKET_CONNECTION (user_data));
|
||||
+
|
||||
+ return G_SOURCE_REMOVE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+soup_websocket_connection_write (SoupWebsocketConnection *self)
|
||||
{
|
||||
- SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (user_data);
|
||||
SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
const guint8 *data;
|
||||
GError *error = NULL;
|
||||
@@ -1043,19 +1079,18 @@
|
||||
gssize count;
|
||||
gsize len;
|
||||
|
||||
+ soup_websocket_connection_stop_output_source (self);
|
||||
+
|
||||
if (soup_websocket_connection_get_state (self) == SOUP_WEBSOCKET_STATE_CLOSED) {
|
||||
g_debug ("Ignoring message since the connection is closed");
|
||||
- stop_output (self);
|
||||
- return TRUE;
|
||||
+ return;
|
||||
}
|
||||
|
||||
frame = g_queue_peek_head (&pv->outgoing);
|
||||
|
||||
/* No more frames to send */
|
||||
- if (frame == NULL) {
|
||||
- stop_output (self);
|
||||
- return TRUE;
|
||||
- }
|
||||
+ if (frame == NULL)
|
||||
+ return;
|
||||
|
||||
data = g_bytes_get_data (frame->data, &len);
|
||||
g_assert (len > 0);
|
||||
@@ -1075,7 +1110,7 @@
|
||||
frame->pending = TRUE;
|
||||
} else {
|
||||
emit_error_and_close (self, error, TRUE);
|
||||
- return FALSE;
|
||||
+ return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1093,23 +1128,21 @@
|
||||
}
|
||||
}
|
||||
frame_free (frame);
|
||||
+
|
||||
+ if (g_queue_is_empty (&pv->outgoing))
|
||||
+ return;
|
||||
}
|
||||
|
||||
- return TRUE;
|
||||
+ soup_websocket_connection_start_output_source (self);
|
||||
}
|
||||
|
||||
-static void
|
||||
-start_output (SoupWebsocketConnection *self)
|
||||
+static gboolean
|
||||
+on_web_socket_output (GObject *pollable_stream,
|
||||
+ gpointer user_data)
|
||||
{
|
||||
- SoupWebsocketConnectionPrivate *pv = self->pv;
|
||||
-
|
||||
- if (pv->output_source)
|
||||
- return;
|
||||
+ soup_websocket_connection_write (SOUP_WEBSOCKET_CONNECTION (user_data));
|
||||
|
||||
- g_debug ("starting output source");
|
||||
- pv->output_source = g_pollable_output_stream_create_source (pv->output, NULL);
|
||||
- g_source_set_callback (pv->output_source, (GSourceFunc)on_web_socket_output, self, NULL);
|
||||
- g_source_attach (pv->output_source, pv->main_context);
|
||||
+ return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1150,7 +1183,7 @@
|
||||
g_queue_push_tail (&pv->outgoing, frame);
|
||||
}
|
||||
|
||||
- start_output (self);
|
||||
+ soup_websocket_connection_write (self);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1175,9 +1208,7 @@
|
||||
pv->output = G_POLLABLE_OUTPUT_STREAM (os);
|
||||
g_return_if_fail (g_pollable_output_stream_can_poll (pv->output));
|
||||
|
||||
- pv->input_source = g_pollable_input_stream_create_source (pv->input, NULL);
|
||||
- g_source_set_callback (pv->input_source, (GSourceFunc)on_web_socket_input, self, NULL);
|
||||
- g_source_attach (pv->input_source, pv->main_context);
|
||||
+ soup_websocket_connection_start_input_source (self);
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git tests/websocket-test.c tests/websocket-test.c
|
||||
index 146fdf82..26d064df 100644
|
||||
--- a/tests/websocket-test.c
|
||||
+++ b/tests/websocket-test.c
|
||||
@@ -733,6 +733,7 @@
|
||||
const char frames[] =
|
||||
"\x88\x09\x03\xe8""reason1"
|
||||
"\x88\x09\x03\xe8""reason2";
|
||||
+ GSocket *socket;
|
||||
GError *error = NULL;
|
||||
|
||||
g_mutex_lock (&test->mutex);
|
||||
@@ -742,7 +743,8 @@
|
||||
frames, sizeof (frames) -1, &written, NULL, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert_cmpuint (written, ==, sizeof (frames) - 1);
|
||||
- g_io_stream_close (test->raw_server, NULL, &error);
|
||||
+ socket = g_socket_connection_get_socket (G_SOCKET_CONNECTION (test->raw_server));
|
||||
+ g_socket_shutdown (socket, FALSE, TRUE, &error);
|
||||
g_assert_no_error (error);
|
||||
|
||||
return NULL;
|
||||
@@ -766,6 +768,7 @@
|
||||
WAIT_UNTIL (soup_websocket_connection_get_state (test->client) == SOUP_WEBSOCKET_STATE_CLOSED);
|
||||
g_assert_cmpuint (soup_websocket_connection_get_close_code (test->client), ==, SOUP_WEBSOCKET_CLOSE_NORMAL);
|
||||
g_assert_cmpstr (soup_websocket_connection_get_close_data (test->client), ==, "reason1");
|
||||
+ g_io_stream_close (test->raw_server, NULL, NULL);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,356 +0,0 @@
|
||||
diff -up libsoup-2.62.3/libsoup/soup-auth-ntlm.c.4 libsoup-2.62.3/libsoup/soup-auth-ntlm.c
|
||||
--- libsoup-2.62.3/libsoup/soup-auth-ntlm.c.4 2021-03-12 07:30:03.366088932 +0100
|
||||
+++ libsoup-2.62.3/libsoup/soup-auth-ntlm.c 2021-03-12 07:30:25.296043405 +0100
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
#include <glib.h>
|
||||
|
||||
#include "soup-auth-ntlm.h"
|
||||
@@ -26,14 +28,20 @@ static char *soup_ntlm_request
|
||||
static gboolean soup_ntlm_parse_challenge (const char *challenge,
|
||||
char **nonce,
|
||||
char **default_domain,
|
||||
- gboolean *ntlmv2_session);
|
||||
-static char *soup_ntlm_response (const char *nonce,
|
||||
+ gboolean *ntlmv2_session,
|
||||
+ gboolean *negotiate_target,
|
||||
+ char **target_info,
|
||||
+ size_t *target_info_sz);
|
||||
+static char *soup_ntlm_response (const char *nonce,
|
||||
const char *user,
|
||||
guchar nt_hash[21],
|
||||
guchar lm_hash[21],
|
||||
const char *host,
|
||||
const char *domain,
|
||||
- gboolean ntlmv2_session);
|
||||
+ gboolean ntlmv2_session,
|
||||
+ gboolean negotiate_target,
|
||||
+ const char *target_info,
|
||||
+ size_t target_info_sz);
|
||||
|
||||
typedef enum {
|
||||
SOUP_NTLM_NEW,
|
||||
@@ -49,6 +57,9 @@ typedef struct {
|
||||
char *nonce;
|
||||
char *response_header;
|
||||
gboolean ntlmv2_session;
|
||||
+ gboolean negotiate_target;
|
||||
+ char *target_info;
|
||||
+ size_t target_info_sz;
|
||||
} SoupNTLMConnectionState;
|
||||
|
||||
typedef enum {
|
||||
@@ -280,6 +291,7 @@ soup_auth_ntlm_free_connection_state (So
|
||||
|
||||
g_free (conn->nonce);
|
||||
g_free (conn->response_header);
|
||||
+ g_free (conn->target_info);
|
||||
g_slice_free (SoupNTLMConnectionState, conn);
|
||||
}
|
||||
|
||||
@@ -339,7 +351,8 @@ soup_auth_ntlm_update_connection (SoupCo
|
||||
|
||||
if (!soup_ntlm_parse_challenge (auth_header + 5, &conn->nonce,
|
||||
priv->domain ? NULL : &priv->domain,
|
||||
- &conn->ntlmv2_session)) {
|
||||
+ &conn->ntlmv2_session, &conn->negotiate_target,
|
||||
+ &conn->target_info, &conn->target_info_sz)) {
|
||||
conn->state = SOUP_NTLM_FAILED;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -521,7 +534,10 @@ soup_auth_ntlm_get_connection_authorizat
|
||||
priv->lm_hash,
|
||||
NULL,
|
||||
priv->domain,
|
||||
- conn->ntlmv2_session);
|
||||
+ conn->ntlmv2_session,
|
||||
+ conn->negotiate_target,
|
||||
+ conn->target_info,
|
||||
+ conn->target_info_sz);
|
||||
}
|
||||
g_clear_pointer (&conn->nonce, g_free);
|
||||
conn->state = SOUP_NTLM_SENT_RESPONSE;
|
||||
@@ -647,14 +663,20 @@ typedef struct {
|
||||
#define NTLM_CHALLENGE_NONCE_OFFSET 24
|
||||
#define NTLM_CHALLENGE_NONCE_LENGTH 8
|
||||
#define NTLM_CHALLENGE_DOMAIN_STRING_OFFSET 12
|
||||
+#define NTLM_CHALLENGE_TARGET_INFORMATION_OFFSET 40
|
||||
|
||||
#define NTLM_CHALLENGE_FLAGS_OFFSET 20
|
||||
#define NTLM_FLAGS_NEGOTIATE_NTLMV2 0x00080000
|
||||
+#define NTLM_FLAGS_NEGOTIATE_TARGET_INFORMATION 0x00800000
|
||||
+#define NTLM_FLAGS_REQUEST_TARGET 0x00000004
|
||||
|
||||
#define NTLM_RESPONSE_HEADER "NTLMSSP\x00\x03\x00\x00\x00"
|
||||
#define NTLM_RESPONSE_FLAGS 0x8201
|
||||
+#define NTLM_RESPONSE_TARGET_INFORMATION_OFFSET 44
|
||||
#define NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY 0x00080000
|
||||
|
||||
+#define HMAC_MD5_LENGTH 16
|
||||
+
|
||||
typedef struct {
|
||||
guchar header[12];
|
||||
|
||||
@@ -686,10 +708,14 @@ static gboolean
|
||||
soup_ntlm_parse_challenge (const char *challenge,
|
||||
char **nonce,
|
||||
char **default_domain,
|
||||
- gboolean *ntlmv2_session)
|
||||
+ gboolean *ntlmv2_session,
|
||||
+ gboolean *negotiate_target,
|
||||
+ char **target_info,
|
||||
+ size_t *target_info_sz)
|
||||
{
|
||||
gsize clen;
|
||||
NTLMString domain;
|
||||
+ NTLMString target;
|
||||
guchar *chall;
|
||||
guint32 flags;
|
||||
|
||||
@@ -703,6 +729,14 @@ soup_ntlm_parse_challenge (const char *c
|
||||
memcpy (&flags, chall + NTLM_CHALLENGE_FLAGS_OFFSET, sizeof(flags));
|
||||
flags = GUINT_FROM_LE (flags);
|
||||
*ntlmv2_session = (flags & NTLM_FLAGS_NEGOTIATE_NTLMV2) ? TRUE : FALSE;
|
||||
+ /* To know if NTLMv2 responses should be calculated */
|
||||
+ *negotiate_target = (flags & NTLM_FLAGS_NEGOTIATE_TARGET_INFORMATION ) ? TRUE : FALSE;
|
||||
+ if (*negotiate_target) {
|
||||
+ if (clen < NTLM_CHALLENGE_TARGET_INFORMATION_OFFSET + sizeof (target)) {
|
||||
+ g_free (chall);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (default_domain) {
|
||||
memcpy (&domain, chall + NTLM_CHALLENGE_DOMAIN_STRING_OFFSET, sizeof (domain));
|
||||
@@ -723,6 +757,19 @@ soup_ntlm_parse_challenge (const char *c
|
||||
*nonce = g_memdup (chall + NTLM_CHALLENGE_NONCE_OFFSET,
|
||||
NTLM_CHALLENGE_NONCE_LENGTH);
|
||||
}
|
||||
+ /* For NTLMv2 response */
|
||||
+ if (*negotiate_target && target_info) {
|
||||
+ memcpy (&target, chall + NTLM_CHALLENGE_TARGET_INFORMATION_OFFSET, sizeof (target));
|
||||
+ target.length = GUINT16_FROM_LE (target.length);
|
||||
+ target.offset = GUINT16_FROM_LE (target.offset);
|
||||
+
|
||||
+ if (clen < target.length + target.offset) {
|
||||
+ g_free (chall);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ *target_info = g_memdup (chall + target.offset, target.length);
|
||||
+ *target_info_sz = target.length;
|
||||
+ }
|
||||
|
||||
g_free (chall);
|
||||
return TRUE;
|
||||
@@ -761,6 +808,115 @@ calc_ntlm2_session_response (const char
|
||||
calc_response (nt_hash, ntlmv2_hash, nt_resp);
|
||||
}
|
||||
|
||||
+/* Compute HMAC-MD5 with Glib function*/
|
||||
+static void
|
||||
+calc_hmac_md5 (unsigned char *hmac, const guchar *key, gsize key_sz, const guchar *data, gsize data_sz)
|
||||
+{
|
||||
+ char *hmac_hex, *hex_pos;
|
||||
+ size_t count;
|
||||
+
|
||||
+ hmac_hex = g_compute_hmac_for_data(G_CHECKSUM_MD5, key, key_sz, data, data_sz);
|
||||
+ hex_pos = hmac_hex;
|
||||
+ for (count = 0; count < HMAC_MD5_LENGTH; count++)
|
||||
+ {
|
||||
+ /* The 'hh' sscanf format modifier is C99, so we enable it on
|
||||
+ * non-Windows or if __USE_MINGW_ANSI_STDIO is enabled or`
|
||||
+ * if we are building on Visual Studio 2015 or later
|
||||
+ */
|
||||
+#if !defined (G_OS_WIN32) || (__USE_MINGW_ANSI_STDIO == 1) || (_MSC_VER >= 1900)
|
||||
+ sscanf(hex_pos, "%2hhx", &hmac[count]);
|
||||
+#else
|
||||
+ unsigned int tmp_hmac;
|
||||
+ sscanf(hex_pos, "%2x", &tmp_hmac);
|
||||
+ hmac[count] = (guint8)tmp_hmac;
|
||||
+#endif
|
||||
+
|
||||
+ hex_pos += 2;
|
||||
+ }
|
||||
+ g_free(hmac_hex);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+calc_ntlmv2_response (const char *user, const char *domain,
|
||||
+ const guchar *nt_hash, const gsize nt_hash_sz,
|
||||
+ const guchar *nonce,
|
||||
+ const char *target_info, size_t target_info_sz,
|
||||
+ guchar *lm_resp, size_t lm_resp_sz,
|
||||
+ guchar *nt_resp, size_t nt_resp_sz)
|
||||
+{
|
||||
+ const unsigned char blob_signature[] = {0x01,0x01,0x00,0x00};
|
||||
+ const unsigned char blob_reserved[] = {0x00,0x00,0x00,0x00};
|
||||
+ gint64 blob_timestamp;
|
||||
+ unsigned char client_nonce[8];
|
||||
+ const unsigned char blob_unknown[] = {0x00,0x00,0x00,0x00};
|
||||
+
|
||||
+ unsigned char ntv2_hash[HMAC_MD5_LENGTH];
|
||||
+ guchar *nonce_blob, *blob, *p_blob;
|
||||
+ unsigned char nonce_blob_hash[HMAC_MD5_LENGTH];
|
||||
+ unsigned char nonce_client_nonce[16], nonce_client_nonce_hash[HMAC_MD5_LENGTH];
|
||||
+ gchar *user_uppercase, *user_domain, *user_domain_conv;
|
||||
+ gsize user_domain_conv_sz;
|
||||
+ size_t blob_sz;
|
||||
+ int i;
|
||||
+
|
||||
+ /* create HMAC-MD5 hash of Unicode uppercase username and Unicode domain */
|
||||
+ user_uppercase = g_utf8_strup (user, strlen (user));
|
||||
+ user_domain = g_strconcat (user_uppercase, domain, NULL);
|
||||
+ user_domain_conv = g_convert (user_domain, -1, "UCS-2LE", "UTF-8", NULL, &user_domain_conv_sz, NULL);
|
||||
+ calc_hmac_md5 (ntv2_hash, nt_hash, nt_hash_sz, (const guchar *)user_domain_conv, user_domain_conv_sz);
|
||||
+ g_free (user_uppercase);
|
||||
+ g_free (user_domain);
|
||||
+ g_free (user_domain_conv);
|
||||
+
|
||||
+ /* create random client nonce */
|
||||
+ for (i = 0; i < sizeof (client_nonce); i++)
|
||||
+ {
|
||||
+ client_nonce[i] = g_random_int();
|
||||
+ }
|
||||
+
|
||||
+ /* create timestamp for blob
|
||||
+ * LE, 64-bit signed value, number of tenths of a ms since January 1, 1601.*/
|
||||
+ blob_timestamp = GINT64_TO_LE(((unsigned long)time(NULL) + 11644473600) * 10000000);
|
||||
+
|
||||
+ /* create blob */
|
||||
+ blob_sz = sizeof (blob_signature) + sizeof (blob_reserved) +
|
||||
+ sizeof (blob_timestamp) + sizeof (client_nonce) +
|
||||
+ sizeof (blob_unknown) + target_info_sz;
|
||||
+ p_blob = blob = g_malloc (blob_sz);
|
||||
+ memset (blob, 0, blob_sz);
|
||||
+ memcpy (p_blob, blob_signature, sizeof (blob_signature));
|
||||
+ memcpy (p_blob += sizeof (blob_signature), blob_reserved, sizeof (blob_reserved));
|
||||
+ memcpy (p_blob += sizeof (blob_reserved), &blob_timestamp, sizeof (blob_timestamp));
|
||||
+ memcpy (p_blob += sizeof (blob_timestamp), client_nonce, sizeof (client_nonce));
|
||||
+ memcpy (p_blob += sizeof (client_nonce), blob_unknown, sizeof (blob_unknown));
|
||||
+ memcpy (p_blob += sizeof (blob_unknown), target_info, target_info_sz);
|
||||
+
|
||||
+ /* create HMAC-MD5 hash of concatenated nonce and blob */
|
||||
+ nonce_blob = g_malloc (NTLM_CHALLENGE_NONCE_LENGTH + blob_sz);
|
||||
+ memcpy (nonce_blob, nonce, NTLM_CHALLENGE_NONCE_LENGTH);
|
||||
+ memcpy (nonce_blob + NTLM_CHALLENGE_NONCE_LENGTH, blob, blob_sz);
|
||||
+ calc_hmac_md5 (nonce_blob_hash, (const guchar *)ntv2_hash, (gsize) sizeof (ntv2_hash), (const guchar *) nonce_blob, (gsize) NTLM_CHALLENGE_NONCE_LENGTH + blob_sz);
|
||||
+ g_free (nonce_blob);
|
||||
+
|
||||
+ /* create NTv2 response */
|
||||
+ memset (nt_resp, 0, nt_resp_sz);
|
||||
+ memcpy (nt_resp, nonce_blob_hash, sizeof (nonce_blob_hash));
|
||||
+ memcpy (nt_resp + sizeof (nonce_blob_hash), blob, blob_sz);
|
||||
+
|
||||
+ g_free (blob);
|
||||
+
|
||||
+ /* LMv2
|
||||
+ * create HMAC-MD5 hash of concatenated nonce and client nonce
|
||||
+ */
|
||||
+ memcpy (nonce_client_nonce, nonce, NTLM_CHALLENGE_NONCE_LENGTH);
|
||||
+ memcpy (nonce_client_nonce + NTLM_CHALLENGE_NONCE_LENGTH, client_nonce, sizeof (client_nonce));
|
||||
+ calc_hmac_md5 (nonce_client_nonce_hash, (const guchar *) ntv2_hash, (gsize) sizeof (ntv2_hash), (const guchar *) nonce_client_nonce, (gsize) NTLM_CHALLENGE_NONCE_LENGTH + sizeof (client_nonce));
|
||||
+
|
||||
+ /* create LMv2 response */
|
||||
+ memset (lm_resp, 0, lm_resp_sz);
|
||||
+ memcpy (lm_resp, nonce_client_nonce_hash, sizeof (nonce_client_nonce_hash));
|
||||
+ memcpy (lm_resp + sizeof (nonce_client_nonce_hash), client_nonce, sizeof (client_nonce));
|
||||
+}
|
||||
|
||||
static char *
|
||||
soup_ntlm_response (const char *nonce,
|
||||
@@ -769,23 +925,45 @@ soup_ntlm_response (const char *nonce,
|
||||
guchar lm_hash[21],
|
||||
const char *host,
|
||||
const char *domain,
|
||||
- gboolean ntlmv2_session)
|
||||
+ gboolean ntlmv2_session,
|
||||
+ gboolean negotiate_target,
|
||||
+ const char *target_info,
|
||||
+ size_t target_info_sz)
|
||||
{
|
||||
+
|
||||
int offset;
|
||||
- gsize hlen, dlen, ulen;
|
||||
- guchar lm_resp[24], nt_resp[24];
|
||||
+ gsize hlen, dlen, ulen, nt_resp_sz;
|
||||
+ guchar lm_resp[24], *nt_resp;
|
||||
char *user_conv, *host_conv, *domain_conv;
|
||||
NTLMResponse resp;
|
||||
char *out, *p;
|
||||
int state, save;
|
||||
|
||||
- if (ntlmv2_session) {
|
||||
+ if (negotiate_target)
|
||||
+ {
|
||||
+ /* nonce_blob_hash 16 + blob_signature 4 + blob_reserved 4 +
|
||||
+ * blob_timestamp 8 + client_nonce 8 + blob_unknown 4 +
|
||||
+ * target_info*/
|
||||
+ nt_resp_sz = NTLM_RESPONSE_TARGET_INFORMATION_OFFSET + target_info_sz;
|
||||
+ } else {
|
||||
+ nt_resp_sz = 24;
|
||||
+ }
|
||||
+ nt_resp = g_malloc (nt_resp_sz);
|
||||
+
|
||||
+ if (ntlmv2_session && !negotiate_target) {
|
||||
calc_ntlm2_session_response (nonce, nt_hash, lm_hash,
|
||||
lm_resp, sizeof(lm_resp), nt_resp);
|
||||
- } else {
|
||||
- /* Compute a regular response */
|
||||
+ } else if (!negotiate_target){
|
||||
+ /* Compute a regular NTLMv1 response */
|
||||
calc_response (nt_hash, (guchar *) nonce, nt_resp);
|
||||
calc_response (lm_hash, (guchar *) nonce, lm_resp);
|
||||
+ } else {
|
||||
+ calc_ntlmv2_response (user, domain,
|
||||
+ nt_hash, 21,
|
||||
+ (guchar *) nonce,
|
||||
+ target_info, target_info_sz,
|
||||
+ lm_resp, sizeof (lm_resp),
|
||||
+ nt_resp, (size_t) nt_resp_sz);
|
||||
}
|
||||
|
||||
memset (&resp, 0, sizeof (resp));
|
||||
@@ -793,7 +971,8 @@ soup_ntlm_response (const char *nonce,
|
||||
resp.flags = GUINT32_TO_LE (NTLM_RESPONSE_FLAGS);
|
||||
if (ntlmv2_session)
|
||||
resp.flags |= GUINT32_TO_LE (NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY);
|
||||
-
|
||||
+ if (negotiate_target)
|
||||
+ resp.flags |= GUINT32_TO_LE (NTLM_FLAGS_REQUEST_TARGET);
|
||||
offset = sizeof (resp);
|
||||
|
||||
if (!host)
|
||||
@@ -807,10 +986,10 @@ soup_ntlm_response (const char *nonce,
|
||||
ntlm_set_string (&resp.user, &offset, ulen);
|
||||
ntlm_set_string (&resp.host, &offset, hlen);
|
||||
ntlm_set_string (&resp.lm_resp, &offset, sizeof (lm_resp));
|
||||
- ntlm_set_string (&resp.nt_resp, &offset, sizeof (nt_resp));
|
||||
+ ntlm_set_string (&resp.nt_resp, &offset, nt_resp_sz);
|
||||
|
||||
out = g_malloc (((offset + 3) * 4) / 3 + 6);
|
||||
- strncpy (out, "NTLM ", 5);
|
||||
+ memcpy (out, "NTLM ", 5);
|
||||
p = out + 5;
|
||||
|
||||
state = save = 0;
|
||||
@@ -825,7 +1004,7 @@ soup_ntlm_response (const char *nonce,
|
||||
FALSE, p, &state, &save);
|
||||
p += g_base64_encode_step (lm_resp, sizeof (lm_resp),
|
||||
FALSE, p, &state, &save);
|
||||
- p += g_base64_encode_step (nt_resp, sizeof (nt_resp),
|
||||
+ p += g_base64_encode_step (nt_resp, nt_resp_sz,
|
||||
FALSE, p, &state, &save);
|
||||
p += g_base64_encode_close (FALSE, p, &state, &save);
|
||||
*p = '\0';
|
||||
@@ -833,6 +1012,7 @@ soup_ntlm_response (const char *nonce,
|
||||
g_free (domain_conv);
|
||||
g_free (user_conv);
|
||||
g_free (host_conv);
|
||||
+ g_free (nt_resp);
|
||||
|
||||
return out;
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
From 87e8c2ab9f3bc79befb0e3b25ec513cfd36fefe9 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garcia Campos <cgarcia@igalia.com>
|
||||
Date: Tue, 21 Jan 2020 11:41:37 +0100
|
||||
Subject: [PATCH] WebSockets: do not start the input source when IO is closing
|
||||
|
||||
We should not schedule a new read after reading the close message, since
|
||||
we don't expect more input. This fixes a crash due to an assert that
|
||||
checks that the input source is NULL when the connection is destroyed
|
||||
that happens when the connection is destroyed in the closed callback.
|
||||
|
||||
Fixes #181
|
||||
---
|
||||
libsoup/soup-websocket-connection.c | 3 ++-
|
||||
tests/websocket-test.c | 33 +++++++++++++++++++++++++++++
|
||||
2 files changed, 35 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c
|
||||
index 2c7fc1161..a4095e1c9 100644
|
||||
--- a/libsoup/soup-websocket-connection.c
|
||||
+++ b/libsoup/soup-websocket-connection.c
|
||||
@@ -1156,7 +1156,8 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
|
||||
return;
|
||||
}
|
||||
|
||||
- soup_websocket_connection_start_input_source (self);
|
||||
+ if (!pv->io_closing)
|
||||
+ soup_websocket_connection_start_input_source (self);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
diff --git a/tests/websocket-test.c b/tests/websocket-test.c
|
||||
index b5142612e..5e40cf364 100644
|
||||
--- a/tests/websocket-test.c
|
||||
+++ b/tests/websocket-test.c
|
||||
@@ -1067,6 +1067,34 @@ test_close_after_close (Test *test,
|
||||
g_io_stream_close (test->raw_server, NULL, NULL);
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+on_close_unref_connection (SoupWebsocketConnection *ws,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ Test *test = user_data;
|
||||
+
|
||||
+ g_assert_true (test->server == ws);
|
||||
+ g_clear_object (&test->server);
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+test_server_unref_connection_on_close (Test *test,
|
||||
+ gconstpointer data)
|
||||
+{
|
||||
+ gboolean close_event_client = FALSE;
|
||||
+
|
||||
+ g_signal_connect (test->client, "closed", G_CALLBACK (on_close_set_flag), &close_event_client);
|
||||
+ g_signal_connect (test->server, "closed", G_CALLBACK (on_close_unref_connection), test);
|
||||
+ soup_websocket_connection_close (test->client, SOUP_WEBSOCKET_CLOSE_GOING_AWAY, "client closed");
|
||||
+ g_assert_cmpint (soup_websocket_connection_get_state (test->client), ==, SOUP_WEBSOCKET_STATE_CLOSING);
|
||||
+
|
||||
+ WAIT_UNTIL (test->server == NULL);
|
||||
+ WAIT_UNTIL (soup_websocket_connection_get_state (test->client) == SOUP_WEBSOCKET_STATE_CLOSED);
|
||||
+
|
||||
+ g_assert_true (close_event_client);
|
||||
+}
|
||||
+
|
||||
static gpointer
|
||||
timeout_server_thread (gpointer user_data)
|
||||
{
|
||||
@@ -1923,6 +1951,11 @@ main (int argc,
|
||||
test_close_after_close,
|
||||
teardown_direct_connection);
|
||||
|
||||
+ g_test_add ("/websocket/soup/server-unref-connection-on-close", Test, NULL,
|
||||
+ setup_soup_connection,
|
||||
+ test_server_unref_connection_on_close,
|
||||
+ teardown_soup_connection);
|
||||
+
|
||||
|
||||
g_test_add ("/websocket/direct/protocol-negotiate", Test, NULL, NULL,
|
||||
test_protocol_negotiate_direct,
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,129 +0,0 @@
|
||||
diff -up libsoup-2.62.2/libsoup/soup-headers.c.cve-2024-52530 libsoup-2.62.2/libsoup/soup-headers.c
|
||||
--- libsoup-2.62.2/libsoup/soup-headers.c.cve-2024-52530 2018-03-23 14:44:54.000000000 +0100
|
||||
+++ libsoup-2.62.2/libsoup/soup-headers.c 2024-11-12 10:23:16.693272087 +0100
|
||||
@@ -50,13 +50,14 @@ soup_headers_parse (const char *str, int
|
||||
* ignorable trailing whitespace.
|
||||
*/
|
||||
|
||||
+ /* No '\0's are allowed */
|
||||
+ if (memchr (str, '\0', len))
|
||||
+ return FALSE;
|
||||
+
|
||||
/* Skip over the Request-Line / Status-Line */
|
||||
headers_start = memchr (str, '\n', len);
|
||||
if (!headers_start)
|
||||
return FALSE;
|
||||
- /* No '\0's in the Request-Line / Status-Line */
|
||||
- if (memchr (str, '\0', headers_start - str))
|
||||
- return FALSE;
|
||||
|
||||
/* We work on a copy of the headers, which we can write '\0's
|
||||
* into, so that we don't have to individually g_strndup and
|
||||
@@ -68,14 +69,6 @@ soup_headers_parse (const char *str, int
|
||||
headers_copy[copy_len] = '\0';
|
||||
value_end = headers_copy;
|
||||
|
||||
- /* There shouldn't be any '\0's in the headers already, but
|
||||
- * this is the web we're talking about.
|
||||
- */
|
||||
- while ((p = memchr (headers_copy, '\0', copy_len))) {
|
||||
- memmove (p, p + 1, copy_len - (p - headers_copy));
|
||||
- copy_len--;
|
||||
- }
|
||||
-
|
||||
while (*(value_end + 1)) {
|
||||
name = value_end + 1;
|
||||
name_end = strchr (name, ':');
|
||||
diff -up libsoup-2.62.2/tests/header-parsing.c.cve-2024-52530 libsoup-2.62.2/tests/header-parsing.c
|
||||
--- libsoup-2.62.2/tests/header-parsing.c.cve-2024-52530 2024-11-12 10:25:26.452447520 +0100
|
||||
+++ libsoup-2.62.2/tests/header-parsing.c 2024-11-12 10:28:05.738158891 +0100
|
||||
@@ -358,24 +358,6 @@ static struct RequestTest {
|
||||
}
|
||||
},
|
||||
|
||||
- { "NUL in header name", "760832",
|
||||
- "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
|
||||
- SOUP_STATUS_OK,
|
||||
- "GET", "/", SOUP_HTTP_1_1,
|
||||
- { { "Host", "example.com" },
|
||||
- { NULL }
|
||||
- }
|
||||
- },
|
||||
-
|
||||
- { "NUL in header value", "760832",
|
||||
- "GET / HTTP/1.1\r\nHost: example\x00" "com\r\n", 35,
|
||||
- SOUP_STATUS_OK,
|
||||
- "GET", "/", SOUP_HTTP_1_1,
|
||||
- { { "Host", "examplecom" },
|
||||
- { NULL }
|
||||
- }
|
||||
- },
|
||||
-
|
||||
/************************/
|
||||
/*** INVALID REQUESTS ***/
|
||||
/************************/
|
||||
@@ -448,6 +430,21 @@ static struct RequestTest {
|
||||
SOUP_STATUS_EXPECTATION_FAILED,
|
||||
NULL, NULL, -1,
|
||||
{ { NULL } }
|
||||
+ },
|
||||
+
|
||||
+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
|
||||
+ { "NUL in header name", NULL,
|
||||
+ "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
|
||||
+ SOUP_STATUS_BAD_REQUEST,
|
||||
+ NULL, NULL, -1,
|
||||
+ { { NULL } }
|
||||
+ },
|
||||
+
|
||||
+ { "NUL in header value", NULL,
|
||||
+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
|
||||
+ SOUP_STATUS_BAD_REQUEST,
|
||||
+ NULL, NULL, -1,
|
||||
+ { { NULL } }
|
||||
}
|
||||
};
|
||||
static const int num_reqtests = G_N_ELEMENTS (reqtests);
|
||||
@@ -620,22 +617,6 @@ static struct ResponseTest {
|
||||
{ NULL } }
|
||||
},
|
||||
|
||||
- { "NUL in header name", "760832",
|
||||
- "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
|
||||
- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
|
||||
- { { "Foo", "bar" },
|
||||
- { NULL }
|
||||
- }
|
||||
- },
|
||||
-
|
||||
- { "NUL in header value", "760832",
|
||||
- "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
|
||||
- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
|
||||
- { { "Foo", "bar" },
|
||||
- { NULL }
|
||||
- }
|
||||
- },
|
||||
-
|
||||
/********************************/
|
||||
/*** VALID CONTINUE RESPONSES ***/
|
||||
/********************************/
|
||||
@@ -768,6 +749,19 @@ static struct ResponseTest {
|
||||
{ { NULL }
|
||||
}
|
||||
},
|
||||
+
|
||||
+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
|
||||
+ { "NUL in header name", NULL,
|
||||
+ "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
|
||||
+ -1, 0, NULL,
|
||||
+ { { NULL } }
|
||||
+ },
|
||||
+
|
||||
+ { "NUL in header value", "760832",
|
||||
+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
|
||||
+ -1, 0, NULL,
|
||||
+ { { NULL } }
|
||||
+ },
|
||||
};
|
||||
static const int num_resptests = G_N_ELEMENTS (resptests);
|
||||
|
@ -1,121 +0,0 @@
|
||||
From bbeb7d59f98d0073291ca4a7ee9ce1a946842734 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Tue, 27 Aug 2024 13:53:26 -0500
|
||||
Subject: [PATCH] headers: Be more robust against invalid input when parsing
|
||||
params
|
||||
|
||||
If you pass invalid input to a function such as soup_header_parse_param_list_strict()
|
||||
it can cause an overflow if it decodes the input to UTF-8.
|
||||
|
||||
This should never happen with valid UTF-8 input which libsoup's client API
|
||||
ensures, however it's server API does not currently.
|
||||
---
|
||||
libsoup/soup-headers.c | 46 +++++++++++++++++++++---------------------
|
||||
1 file changed, 23 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
|
||||
index 271d2a63..8657483f 100644
|
||||
--- a/libsoup/soup-headers.c
|
||||
+++ b/libsoup/soup-headers.c
|
||||
@@ -650,8 +650,9 @@ soup_header_contains (const char *header, const char *token)
|
||||
}
|
||||
|
||||
static void
|
||||
-decode_quoted_string (char *quoted_string)
|
||||
+decode_quoted_string_inplace (GString *quoted_gstring)
|
||||
{
|
||||
+ char *quoted_string = quoted_gstring->str;
|
||||
char *src, *dst;
|
||||
|
||||
src = quoted_string + 1;
|
||||
@@ -665,10 +666,11 @@ decode_quoted_string (char *quoted_string)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-decode_rfc5987 (char *encoded_string)
|
||||
+decode_rfc5987_inplace (GString *encoded_gstring)
|
||||
{
|
||||
char *q, *decoded;
|
||||
gboolean iso_8859_1 = FALSE;
|
||||
+ const char *encoded_string = encoded_gstring->str;
|
||||
|
||||
q = strchr (encoded_string, '\'');
|
||||
if (!q)
|
||||
@@ -697,14 +699,7 @@ decode_rfc5987 (char *encoded_string)
|
||||
decoded = utf8;
|
||||
}
|
||||
|
||||
- /* If encoded_string was UTF-8, then each 3-character %-escape
|
||||
- * will be converted to a single byte, and so decoded is
|
||||
- * shorter than encoded_string. If encoded_string was
|
||||
- * iso-8859-1, then each 3-character %-escape will be
|
||||
- * converted into at most 2 bytes in UTF-8, and so it's still
|
||||
- * shorter.
|
||||
- */
|
||||
- strcpy (encoded_string, decoded);
|
||||
+ g_string_assign (encoded_gstring, decoded);
|
||||
g_free (decoded);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -714,15 +709,17 @@ parse_param_list (const char *header, char delim)
|
||||
{
|
||||
GHashTable *params;
|
||||
GSList *list, *iter;
|
||||
- char *item, *eq, *name_end, *value;
|
||||
- gboolean override;
|
||||
|
||||
params = g_hash_table_new_full (soup_str_case_hash,
|
||||
soup_str_case_equal,
|
||||
- g_free, NULL);
|
||||
+ g_free, g_free);
|
||||
|
||||
list = parse_list (header, delim);
|
||||
for (iter = list; iter; iter = iter->next) {
|
||||
+ char *item, *eq, *name_end;
|
||||
+ gboolean override, duplicated;
|
||||
+ GString *parsed_value = NULL;
|
||||
+
|
||||
item = iter->data;
|
||||
override = FALSE;
|
||||
|
||||
@@ -737,24 +734,27 @@ parse_param_list (const char *header, char delim)
|
||||
|
||||
*name_end = '\0';
|
||||
|
||||
- value = (char *)skip_lws (eq + 1);
|
||||
+ parsed_value = g_string_new ((char *)skip_lws (eq + 1));
|
||||
|
||||
if (name_end[-1] == '*' && name_end > item + 1) {
|
||||
name_end[-1] = '\0';
|
||||
- if (!decode_rfc5987 (value)) {
|
||||
+ if (!decode_rfc5987_inplace (parsed_value)) {
|
||||
+ g_string_free (parsed_value, TRUE);
|
||||
g_free (item);
|
||||
continue;
|
||||
}
|
||||
override = TRUE;
|
||||
- } else if (*value == '"')
|
||||
- decode_quoted_string (value);
|
||||
- } else
|
||||
- value = NULL;
|
||||
-
|
||||
- if (override || !g_hash_table_lookup (params, item))
|
||||
- g_hash_table_replace (params, item, value);
|
||||
- else
|
||||
+ } else if (parsed_value->str[0] == '"')
|
||||
+ decode_quoted_string_inplace (parsed_value);
|
||||
+ }
|
||||
+
|
||||
+ if (override || !g_hash_table_lookup (params, item)) {
|
||||
+ g_hash_table_replace (params, item, parsed_value ? g_string_free (parsed_value, FALSE) : NULL);
|
||||
+ } else {
|
||||
+ if (parsed_value)
|
||||
+ g_string_free (parsed_value, TRUE);
|
||||
g_free (item);
|
||||
+ }
|
||||
}
|
||||
|
||||
g_slist_free (list);
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,15 +0,0 @@
|
||||
diff -up libsoup-2.62.3/libsoup/soup-websocket-connection.c.cve-2024-52532 libsoup-2.62.3/libsoup/soup-websocket-connection.c
|
||||
--- libsoup-2.62.3/libsoup/soup-websocket-connection.c.cve-2024-52532 2024-11-12 12:00:27.183570627 +0100
|
||||
+++ libsoup-2.62.3/libsoup/soup-websocket-connection.c 2024-11-12 12:01:02.334987409 +0100
|
||||
@@ -1041,9 +1041,9 @@ soup_websocket_connection_read (SoupWebs
|
||||
}
|
||||
|
||||
pv->incoming->len = len + count;
|
||||
- } while (count > 0);
|
||||
+ process_incoming (self);
|
||||
+ } while (count > 0 && !pv->close_sent && !pv->io_closing);
|
||||
|
||||
- process_incoming (self);
|
||||
|
||||
if (end) {
|
||||
if (!pv->close_sent || !pv->close_received) {
|
@ -1,48 +0,0 @@
|
||||
From b7213fc6c639b5ca6c91e215aee18cea36d9dc95 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Tue, 18 Feb 2025 14:29:50 -0600
|
||||
Subject: [PATCH] sniffer: Add better coverage of skip_insignificant_space()
|
||||
|
||||
---
|
||||
libsoup/soup-content-sniffer.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
|
||||
index 698d05e4..3fb29adf 100644
|
||||
--- a/libsoup/soup-content-sniffer.c
|
||||
+++ b/libsoup/soup-content-sniffer.c
|
||||
@@ -612,8 +612,11 @@ sniff_text_or_binary (SoupContentSniffer *sniffer, SoupBuffer *buffer)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-skip_insignificant_space (const char *resource, int *pos, int resource_length)
|
||||
+skip_insignificant_space (const char *resource, gsize *pos, gsize resource_length)
|
||||
{
|
||||
+ if (*pos >= resource_length)
|
||||
+ return TRUE;
|
||||
+
|
||||
while ((resource[*pos] == '\x09') ||
|
||||
(resource[*pos] == '\x20') ||
|
||||
(resource[*pos] == '\x0A') ||
|
||||
@@ -632,7 +635,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
|
||||
{
|
||||
const char *resource = (const char *)buffer->data;
|
||||
int resource_length = MIN (512, buffer->length);
|
||||
- int pos = 0;
|
||||
+ gsize pos = 0;
|
||||
|
||||
if (resource_length < 3)
|
||||
goto text_html;
|
||||
@@ -642,9 +645,6 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
|
||||
pos = 3;
|
||||
|
||||
look_for_tag:
|
||||
- if (pos > resource_length)
|
||||
- goto text_html;
|
||||
-
|
||||
if (skip_insignificant_space (resource, &pos, resource_length))
|
||||
goto text_html;
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 6ec7c5be50b48d6ce0a09aa3468f2c5725406a97 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Catanzaro <mcatanzaro@redhat.com>
|
||||
Date: Wed, 21 May 2025 10:42:51 -0500
|
||||
Subject: [PATCH] Add size limit for total message size
|
||||
|
||||
This size limit could break applications, but it will close the denial
|
||||
of service issue.
|
||||
---
|
||||
libsoup/soup-websocket-connection.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c
|
||||
index 36524d04..f8764aff 100644
|
||||
--- a/libsoup/soup-websocket-connection.c
|
||||
+++ b/libsoup/soup-websocket-connection.c
|
||||
@@ -913,6 +913,11 @@ process_contents (SoupWebsocketConnection *self,
|
||||
switch (pv->message_opcode) {
|
||||
case 0x01:
|
||||
case 0x02:
|
||||
+ /* Safety valve */
|
||||
+ if (pv->message_data->len + payload_len > pv->max_incoming_payload_size) {
|
||||
+ too_big_error_and_close (self, (pv->message_data->len + payload_len));
|
||||
+ return;
|
||||
+ }
|
||||
g_byte_array_append (pv->message_data, payload, payload_len);
|
||||
break;
|
||||
default:
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 9bb0a55de55c6940ced811a64fbca82fe93a9323 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Mon, 28 Oct 2024 12:29:48 -0500
|
||||
Subject: [PATCH] Fix using int instead of size_t for strcspn return
|
||||
|
||||
---
|
||||
libsoup/soup-headers.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
|
||||
index 613e1905..a5f7a7f6 100644
|
||||
--- a/libsoup/soup-headers.c
|
||||
+++ b/libsoup/soup-headers.c
|
||||
@@ -907,7 +907,7 @@ append_param_quoted (GString *string,
|
||||
const char *name,
|
||||
const char *value)
|
||||
{
|
||||
- int len;
|
||||
+ gsize len;
|
||||
|
||||
g_string_append (string, name);
|
||||
g_string_append (string, "=\"");
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 1542173d11df64e39e71367f10596e8160481290 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Sat, 16 Nov 2024 12:07:30 -0600
|
||||
Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff
|
||||
|
||||
Co-Author: Ar Jun <pkillarjun@protonmail.com>
|
||||
---
|
||||
libsoup/soup-content-sniffer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
|
||||
index 967ec614..26c65bbd 100644
|
||||
--- a/libsoup/soup-content-sniffer.c
|
||||
+++ b/libsoup/soup-content-sniffer.c
|
||||
@@ -504,7 +504,7 @@ sniff_unknown (SoupContentSniffer *sniffer, SoupBuffer *buffer,
|
||||
guint index_pattern = 0;
|
||||
gboolean skip_row = FALSE;
|
||||
|
||||
- while ((index_stream < resource_length) &&
|
||||
+ while ((index_stream < resource_length - 1) &&
|
||||
(index_pattern <= type_row->pattern_length)) {
|
||||
/* Skip insignificant white space ("WS" in the spec) */
|
||||
if (type_row->pattern[index_pattern] == ' ') {
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 8e1793e2ddd8c2648b9a28f06bf21fd13bd12b39 Mon Sep 17 00:00:00 2001
|
||||
From: Ar Jun <pkillarjun@protonmail.com>
|
||||
Date: Mon, 18 Nov 2024 14:59:51 -0600
|
||||
Subject: [PATCH] Fix heap buffer overflow in
|
||||
soup-content-sniffer.c:sniff_feed_or_html()
|
||||
|
||||
---
|
||||
libsoup/soup-content-sniffer.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
|
||||
index 26c65bbd..698d05e4 100644
|
||||
--- a/libsoup/soup-content-sniffer.c
|
||||
+++ b/libsoup/soup-content-sniffer.c
|
||||
@@ -620,7 +620,7 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
|
||||
(resource[*pos] == '\x0D')) {
|
||||
*pos = *pos + 1;
|
||||
|
||||
- if (*pos > resource_length)
|
||||
+ if (*pos >= resource_length)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -682,7 +682,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
|
||||
do {
|
||||
pos++;
|
||||
|
||||
- if (pos > resource_length)
|
||||
+ if ((pos + 1) > resource_length)
|
||||
goto text_html;
|
||||
} while (resource[pos] != '>');
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,65 +0,0 @@
|
||||
From 1f509f31b6f8420a3661c3f990424ab7b9164931 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Tue, 11 Feb 2025 14:36:26 -0600
|
||||
Subject: [PATCH 1/2] headers: Handle parsing edge case
|
||||
|
||||
This version number is specifically crafted to pass sanity checks allowing it to go one byte out of bounds.
|
||||
---
|
||||
libsoup/soup-headers.c | 2 +-
|
||||
tests/header-parsing-test.c | 12 ++++++++++++
|
||||
2 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
|
||||
index 85385cea..9d6d00a3 100644
|
||||
--- a/libsoup/soup-headers.c
|
||||
+++ b/libsoup/soup-headers.c
|
||||
@@ -225,7 +225,7 @@ soup_headers_parse_request (const char *str,
|
||||
!g_ascii_isdigit (version[5]))
|
||||
return SOUP_STATUS_BAD_REQUEST;
|
||||
major_version = strtoul (version + 5, &p, 10);
|
||||
- if (*p != '.' || !g_ascii_isdigit (p[1]))
|
||||
+ if (p + 1 >= str + len || *p != '.' || !g_ascii_isdigit (p[1]))
|
||||
return SOUP_STATUS_BAD_REQUEST;
|
||||
minor_version = strtoul (p + 1, &p, 10);
|
||||
version_end = p;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From af5b9a4a3945c52b940d5ac181ef51bb12011f1f Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Wed, 12 Feb 2025 11:30:02 -0600
|
||||
Subject: [PATCH 2/2] headers: Handle parsing only newlines
|
||||
|
||||
Closes #404
|
||||
Closes #407
|
||||
---
|
||||
libsoup/soup-headers.c | 4 ++--
|
||||
tests/header-parsing-test.c | 13 ++++++++++++-
|
||||
2 files changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
|
||||
index 9d6d00a3..52ef2ece 100644
|
||||
--- a/libsoup/soup-headers.c
|
||||
+++ b/libsoup/soup-headers.c
|
||||
@@ -186,7 +186,7 @@ soup_headers_parse_request (const char *str,
|
||||
/* RFC 2616 4.1 "servers SHOULD ignore any empty line(s)
|
||||
* received where a Request-Line is expected."
|
||||
*/
|
||||
- while ((*str == '\r' || *str == '\n') && len > 0) {
|
||||
+ while (len > 0 && (*str == '\r' || *str == '\n')) {
|
||||
str++;
|
||||
len--;
|
||||
}
|
||||
@@ -371,7 +371,7 @@ soup_headers_parse_response (const char *str,
|
||||
* after a response, which we then see prepended to the next
|
||||
* response on that connection.
|
||||
*/
|
||||
- while ((*str == '\r' || *str == '\n') && len > 0) {
|
||||
+ while (len > 0 && (*str == '\r' || *str == '\n')) {
|
||||
str++;
|
||||
len--;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,67 +0,0 @@
|
||||
From f2d316341c00a343d0b46edd590efa8c102521c3 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Fri, 27 Dec 2024 17:53:50 -0600
|
||||
Subject: [PATCH 1/2] soup_message_headers_get_content_disposition: Fix NULL
|
||||
deref
|
||||
|
||||
---
|
||||
libsoup/soup-message-headers.c | 13 +++++++++----
|
||||
tests/header-parsing-test.c | 13 +++++++++++++
|
||||
2 files changed, 22 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
|
||||
index 5c8c7cb9..ccf31233 100644
|
||||
--- a/libsoup/soup-message-headers.c
|
||||
+++ b/libsoup/soup-message-headers.c
|
||||
@@ -1443,10 +1443,15 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
|
||||
*/
|
||||
if (params && g_hash_table_lookup_extended (*params, "filename",
|
||||
&orig_key, &orig_value)) {
|
||||
- char *filename = strrchr (orig_value, '/');
|
||||
-
|
||||
- if (filename)
|
||||
- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
|
||||
+ if (orig_value) {
|
||||
+ char *filename = strrchr (orig_value, '/');
|
||||
+
|
||||
+ if (filename)
|
||||
+ g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
|
||||
+ } else {
|
||||
+ /* filename with no value isn't valid. */
|
||||
+ g_hash_table_remove (*params, "filename");
|
||||
+ }
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
||||
From dd3a245941f117832dd1fdda4f8bc68b44e2810d Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Fri, 27 Dec 2024 18:00:39 -0600
|
||||
Subject: [PATCH 2/2] soup_message_headers_get_content_disposition: strdup
|
||||
truncated filenames
|
||||
|
||||
This table frees the strings it contains.
|
||||
---
|
||||
libsoup/soup-message-headers.c | 2 +-
|
||||
tests/header-parsing-test.c | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
|
||||
index ccf31233..64847e30 100644
|
||||
--- a/libsoup/soup-message-headers.c
|
||||
+++ b/libsoup/soup-message-headers.c
|
||||
@@ -1447,7 +1447,7 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
|
||||
char *filename = strrchr (orig_value, '/');
|
||||
|
||||
if (filename)
|
||||
- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
|
||||
+ g_hash_table_insert (*params, g_strdup (orig_key), g_strdup (filename + 1));
|
||||
} else {
|
||||
/* filename with no value isn't valid. */
|
||||
g_hash_table_remove (*params, "filename");
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 51c25f470f85b485818c253718594a4d59b39931 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Tue, 15 Apr 2025 09:03:00 +0200
|
||||
Subject: [PATCH] multipart: Fix read out of buffer bounds under
|
||||
soup_multipart_new_from_message()
|
||||
|
||||
This is CVE-2025-32914, special crafted input can cause read out of buffer bounds
|
||||
of the body argument.
|
||||
|
||||
Closes #436
|
||||
---
|
||||
libsoup/soup-multipart.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
|
||||
index a7e550f1..dd939739 100644
|
||||
--- a/libsoup/soup-multipart.c
|
||||
+++ b/libsoup/soup-multipart.c
|
||||
@@ -181,7 +181,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- split = strstr (start, "\r\n\r\n");
|
||||
+ split = g_strstr_len (start, body_end - start, "\r\n\r\n");
|
||||
if (!split || split > end) {
|
||||
soup_multipart_free (multipart);
|
||||
soup_buffer_free (flattened);
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,56 +0,0 @@
|
||||
From 355d7979ac27c6a83684e079d5bc6cf148e7bc16 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Thu, 26 Dec 2024 18:31:42 -0600
|
||||
Subject: [PATCH] soup_header_parse_quality_list: Fix leak
|
||||
|
||||
When iterating over the parsed list we now steal the allocated strings that we want and then free_full the list which may contain remaining strings.
|
||||
---
|
||||
libsoup/soup-headers.c | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
|
||||
index eec28adf..3e922816 100644
|
||||
--- a/libsoup/soup-headers.c
|
||||
+++ b/libsoup/soup-headers.c
|
||||
@@ -535,7 +535,7 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
|
||||
GSList *unsorted;
|
||||
QualityItem *array;
|
||||
GSList *sorted, *iter;
|
||||
- char *item, *semi;
|
||||
+ char *semi;
|
||||
const char *param, *equal, *value;
|
||||
double qval;
|
||||
int n;
|
||||
@@ -548,9 +548,8 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
|
||||
unsorted = soup_header_parse_list (header);
|
||||
array = g_new0 (QualityItem, g_slist_length (unsorted));
|
||||
for (iter = unsorted, n = 0; iter; iter = iter->next) {
|
||||
- item = iter->data;
|
||||
qval = 1.0;
|
||||
- for (semi = strchr (item, ';'); semi; semi = strchr (semi + 1, ';')) {
|
||||
+ for (semi = strchr (iter->data, ';'); semi; semi = strchr (semi + 1, ';')) {
|
||||
param = skip_lws (semi + 1);
|
||||
if (*param != 'q')
|
||||
continue;
|
||||
@@ -582,15 +581,15 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
|
||||
if (qval == 0.0) {
|
||||
if (unacceptable) {
|
||||
*unacceptable = g_slist_prepend (*unacceptable,
|
||||
- item);
|
||||
+ g_steal_pointer (&iter->data));
|
||||
}
|
||||
} else {
|
||||
- array[n].item = item;
|
||||
+ array[n].item = g_steal_pointer (&iter->data);
|
||||
array[n].qval = qval;
|
||||
n++;
|
||||
}
|
||||
}
|
||||
- g_slist_free (unsorted);
|
||||
+ g_slist_free_full (unsorted, g_free);
|
||||
|
||||
qsort (array, n, sizeof (QualityItem), sort_by_qval);
|
||||
sorted = NULL;
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 4329a7e88c72079ae3eedbb1558b929851507464 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Griffis <pgriffis@igalia.com>
|
||||
Date: Wed, 5 Feb 2025 16:18:10 -0600
|
||||
Subject: [PATCH] session: Strip authentication credentails on cross-origin
|
||||
redirect
|
||||
|
||||
This should match the behavior of Firefox and Safari but not of Chromium.
|
||||
---
|
||||
libsoup/soup-session.c | 6 ++++
|
||||
tests/auth-test.c | 77 ++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 83 insertions(+)
|
||||
|
||||
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
|
||||
index dd3cdc46..82ca8bf9 100644
|
||||
--- a/libsoup/soup-session.c
|
||||
+++ b/libsoup/soup-session.c
|
||||
@@ -1187,6 +1187,12 @@ soup_session_redirect_message (SoupSession *session, SoupMessage *msg)
|
||||
SOUP_ENCODING_NONE);
|
||||
}
|
||||
|
||||
+ /* Strip all credentials on cross-origin redirect. */
|
||||
+ if (!soup_uri_host_equal (soup_message_get_uri (msg), new_uri)) {
|
||||
+ soup_message_headers_remove (msg->request_headers, "Authorization");
|
||||
+ soup_message_set_auth (msg, NULL);
|
||||
+ }
|
||||
+
|
||||
soup_message_set_uri (msg, new_uri);
|
||||
soup_uri_free (new_uri);
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 592db079bc2dfea75708751ed0b7533ac9fd36df Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Thu, 15 May 2025 17:49:11 +0200
|
||||
Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body
|
||||
|
||||
It could happen that the boundary started at a place which resulted into
|
||||
a negative number, which in an unsigned integer is a very large value.
|
||||
Check the body size is not a negative value before setting it.
|
||||
|
||||
Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449
|
||||
---
|
||||
libsoup/soup-multipart.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
|
||||
index dd939739..ce2fc109 100644
|
||||
--- a/libsoup/soup-multipart.c
|
||||
+++ b/libsoup/soup-multipart.c
|
||||
@@ -214,7 +214,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
|
||||
*/
|
||||
part_body = soup_buffer_new_subbuffer (flattened,
|
||||
split - flattened->data,
|
||||
- end - 2 - split);
|
||||
+ end - 2 >= split ? end - 2 - split : 0);
|
||||
g_ptr_array_add (multipart->bodies, part_body);
|
||||
|
||||
start = end;
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,123 +0,0 @@
|
||||
From c720f9c696b3b39d8c386abf8c8a9ddad447cda0 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garcia Campos <cgarcia@igalia.com>
|
||||
Date: Wed, 9 Sep 2020 14:44:25 +0200
|
||||
Subject: [PATCH 1/2] tests: fix SSL test with glib-networking >= 2.65.90
|
||||
|
||||
To make SSL tests fail with our testing certificate we create and empty
|
||||
GTlsDatabase passing /dev/null to g_tls_file_database_new(). This no
|
||||
longer works with newer glib-networking, since an empty file is
|
||||
considered an error by gnutls and
|
||||
g_tls_file_database_gnutls_populate_trust_list() now handles gnutls
|
||||
errors properly. Instead, we can just use the system CA file that won't
|
||||
contain our testing certificate for sure.
|
||||
|
||||
Fixes #201
|
||||
---
|
||||
tests/ssl-test.c | 12 +++---------
|
||||
1 file changed, 3 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/tests/ssl-test.c b/tests/ssl-test.c
|
||||
index 735ba416..2c93ca85 100644
|
||||
--- a/tests/ssl-test.c
|
||||
+++ b/tests/ssl-test.c
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "test-utils.h"
|
||||
|
||||
SoupURI *uri;
|
||||
-GTlsDatabase *null_tlsdb;
|
||||
|
||||
static void
|
||||
do_properties_test_for_session (SoupSession *session)
|
||||
@@ -37,7 +36,7 @@ do_async_properties_tests (void)
|
||||
|
||||
session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL);
|
||||
g_object_set (G_OBJECT (session),
|
||||
- SOUP_SESSION_TLS_DATABASE, null_tlsdb,
|
||||
+ SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, TRUE,
|
||||
SOUP_SESSION_SSL_STRICT, FALSE,
|
||||
NULL);
|
||||
do_properties_test_for_session (session);
|
||||
@@ -53,7 +52,7 @@ do_sync_properties_tests (void)
|
||||
|
||||
session = soup_test_session_new (SOUP_TYPE_SESSION_SYNC, NULL);
|
||||
g_object_set (G_OBJECT (session),
|
||||
- SOUP_SESSION_TLS_DATABASE, null_tlsdb,
|
||||
+ SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, TRUE,
|
||||
SOUP_SESSION_SSL_STRICT, FALSE,
|
||||
NULL);
|
||||
do_properties_test_for_session (session);
|
||||
@@ -106,7 +105,7 @@ do_strictness_test (gconstpointer data)
|
||||
}
|
||||
if (!test->with_ca_list) {
|
||||
g_object_set (G_OBJECT (session),
|
||||
- SOUP_SESSION_TLS_DATABASE, null_tlsdb,
|
||||
+ SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, TRUE,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -433,7 +432,6 @@ main (int argc, char **argv)
|
||||
{
|
||||
SoupServer *server = NULL;
|
||||
int i, ret;
|
||||
- GError *error = NULL;
|
||||
|
||||
test_init (argc, argv, NULL);
|
||||
|
||||
@@ -441,9 +439,6 @@ main (int argc, char **argv)
|
||||
server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
|
||||
soup_server_add_handler (server, NULL, server_handler, NULL, NULL);
|
||||
uri = soup_test_server_get_uri (server, "https", "127.0.0.1");
|
||||
-
|
||||
- null_tlsdb = g_tls_file_database_new ("/dev/null", &error);
|
||||
- g_assert_no_error (error);
|
||||
} else
|
||||
uri = NULL;
|
||||
|
||||
@@ -463,7 +458,6 @@ main (int argc, char **argv)
|
||||
if (tls_available) {
|
||||
soup_uri_free (uri);
|
||||
soup_test_server_quit_unref (server);
|
||||
- g_object_unref (null_tlsdb);
|
||||
}
|
||||
|
||||
test_cleanup ();
|
||||
--
|
||||
2.43.5
|
||||
|
||||
|
||||
From 0fbc7e8220c32f4848d6f1407efe81cc13ab18ef Mon Sep 17 00:00:00 2001
|
||||
From: Michael Catanzaro <mcatanzaro@redhat.com>
|
||||
Date: Sat, 18 Jan 2025 01:20:24 -0600
|
||||
Subject: [PATCH 2/2] Add workaround for flaky ssl-test connection failures
|
||||
|
||||
---
|
||||
tests/ssl-test.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/tests/ssl-test.c b/tests/ssl-test.c
|
||||
index 2c93ca85..1b48c6aa 100644
|
||||
--- a/tests/ssl-test.c
|
||||
+++ b/tests/ssl-test.c
|
||||
@@ -348,6 +348,19 @@ got_connection (GThreadedSocketService *service,
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
+ // Work around a race condition where do_tls_interaction_test's call to
|
||||
+ // soup_session_send_message() fails due to the server having closed the
|
||||
+ // connection:
|
||||
+ //
|
||||
+ // ERROR:../tests/ssl-test.c:405:do_tls_interaction_test: Unexpected status 7 Connection terminated unexpectedly (expected 200 OK)
|
||||
+ //
|
||||
+ // This bug is already fixed upstream, so no sense in spending a bunch
|
||||
+ // of time trying to find a proper fix.
|
||||
+ //
|
||||
+ // I'm not certain, but I suspect it's fixed by:
|
||||
+ // https://gitlab.gnome.org/GNOME/libsoup/-/commit/bd6de90343839125bd07c43c97e1000deb0b40c3
|
||||
+ sleep (1);
|
||||
+
|
||||
g_io_stream_close (tls, NULL, &error);
|
||||
g_assert_no_error (error);
|
||||
|
||||
--
|
||||
2.43.5
|
||||
|
@ -1,44 +0,0 @@
|
||||
From 9ff306aa714efd06ceeafacee03298a3665055b1 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Catanzaro <mcatanzaro@redhat.com>
|
||||
Date: Wed, 30 Apr 2025 14:13:41 -0500
|
||||
Subject: [PATCH] test-utils: fix deadlock in add_listener_in_thread()
|
||||
|
||||
The mutex is locked in the wrong place here.
|
||||
|
||||
Hopefully fixes #379
|
||||
---
|
||||
tests/test-utils.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tests/test-utils.c b/tests/test-utils.c
|
||||
index df4cee44..5c1e316c 100644
|
||||
--- a/tests/test-utils.c
|
||||
+++ b/tests/test-utils.c
|
||||
@@ -607,9 +607,11 @@ static gboolean
|
||||
add_listener_in_thread (gpointer user_data)
|
||||
{
|
||||
AddListenerData *data = user_data;
|
||||
+ SoupURI *uri;
|
||||
|
||||
- data->uri = add_listener (data->server, data->scheme, data->host);
|
||||
+ uri = add_listener (data->server, data->scheme, data->host);
|
||||
g_mutex_lock (&data->mutex);
|
||||
+ data->uri = uri;
|
||||
g_cond_signal (&data->cond);
|
||||
g_mutex_unlock (&data->mutex);
|
||||
|
||||
@@ -641,9 +643,9 @@ soup_test_server_get_uri (SoupServer *server,
|
||||
data.host = host;
|
||||
data.uri = NULL;
|
||||
|
||||
- g_mutex_lock (&data.mutex);
|
||||
soup_add_completion (context, add_listener_in_thread, &data);
|
||||
|
||||
+ g_mutex_lock (&data.mutex);
|
||||
while (!data.uri)
|
||||
g_cond_wait (&data.cond, &data.mutex);
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 2dafd907586f52291b38c46362e72c7379558626 Mon Sep 17 00:00:00 2001
|
||||
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
|
||||
Date: Thu, 18 Feb 2021 09:13:40 +0100
|
||||
Subject: [PATCH] Extend test cert to 2049
|
||||
|
||||
used certtool -u \
|
||||
--load-ca-privkey ./tests/test-key.pem \
|
||||
--load-ca-certificate ./tests/test-cert.pem \
|
||||
--load-certificate ./tests/test-cert.pem
|
||||
|
||||
Without this patch, 3 tests failed in 2027
|
||||
11/29 misc-test FAIL 0.67s (exit status 1)
|
||||
21/29 server-test FAIL 0.12s (exit status 1)
|
||||
25/29 timeout-test FAIL 4.08s (killed by signal 5 SIGTRAP)
|
||||
|
||||
Background:
|
||||
As part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.
|
||||
The usual offset is +15 years, because that is how long I expect some software will be used in some places.
|
||||
This showed up failing tests in our package build.
|
||||
See https://reproducible-builds.org/ for why this matters.
|
||||
|
||||
(cherry picked from commit 38a65f080a3168e8af78bdd3e4928debeea2dbd8)
|
||||
---
|
||||
tests/test-cert.pem | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/tests/test-cert.pem b/tests/test-cert.pem
|
||||
index ff863b4d1..4b8b180dc 100644
|
||||
--- a/tests/test-cert.pem
|
||||
+++ b/tests/test-cert.pem
|
||||
@@ -1,6 +1,6 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC2zCCAcOgAwIBAgIJALRbg2WnuAAqMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
|
||||
-BAMMCTEyNy4wLjAuMTAeFw0xNzA2MjAxNDI3MzBaFw0yNzA2MTgxNDI3MzBaMBQx
|
||||
+BAMMCTEyNy4wLjAuMTAeFw0yMTAyMTgwODA3MzBaFw00OTEyMzEwODA3MzRaMBQx
|
||||
EjAQBgNVBAMMCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAKs4fuRuW77nORhOT9kbbU6BsjKW3GEsMc+ZSmXjINQWpfkES2hV+DQyzhm5
|
||||
qh4OLi1vYtXoSbdQNDCbA8ybZJqR8m9F3ed8vobdSSQGxWpPdXTgz27x+TpiAc9P
|
||||
@@ -8,11 +8,11 @@ w83UuPvlu/0AxHJBFXVAg+id0yFu3wmGWYJHoAtvFi2xeRtAXurNuPtjZyO+gfM9
|
||||
BKTRCkGsRSmPpJyGbU2Q96fjxnVfV9oYvQXeugUcSx/pTUCM/kDgD9QZCxG2rflX
|
||||
NWcqDFY3uO6ZR68Qwi/KouOa8rzrgAcwhFUI6Wz0Zwi1rzRtWK5WqC24aBUYz/tK
|
||||
hl8i88UDXSMh7spChdYDBGLhZyUCAwEAAaMwMC4wLAYDVR0RBCUwI4IJbG9jYWxo
|
||||
-b3N0hwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQBj
|
||||
-+U8tebwg5/pof5Rht6TMHqeg6Fcr4OJkL2ph2g+T/AMTS7kEGeFIKJN5AZ+S/qIY
|
||||
-cdoDKHwc8+bCK/mG6DPmJ4z/2Eamb85YhplOLVrLRwfxRebTK9CtnjcjnflAiU9H
|
||||
-7vPVwXIvkwebhBSQNKTdkBlPXKaTNWXuygeFG2OVQkPf/KAxSdtg2R+owv/s802Z
|
||||
-HISk26wY9oFIQz6AiXWdrY1QqNOltZ7rlU5iofAH7X+9ryZlxPWj/gHg2YQRvvLl
|
||||
-dq6nCF+ED0ke7h0lg5nU0beKEygwli8DlLVbu0JK0PkARFp5t7wUtzC9DCjzvfOc
|
||||
-gxR44PyZX7/2oaTDm4PS
|
||||
+b3N0hwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQAz
|
||||
+/qYTUuBGHgp7T1cfaJPnhx6U1SMfdJRtFoWOXDx+MNCK9GYkdMEabzRGUP5uNHO+
|
||||
+PiZP/bMIHlpsbRA5AyyVf9Xv8JCujvYh24qYcBbwgZrfvNTm0D52P9JJm0SalTXS
|
||||
+kwwTj00DWGVfVzJR+wiwYGHRIlyXbHqQSRzv6+z9f/xY5gXw/KpCNYTuOJcXW7w6
|
||||
+JfMrUnc9pphRUpcLkuuzOMKuB0dtWRc0mZIr7PZHt+0gitNZWA0bDYI3JI9tlK17
|
||||
+nxBUSpGtJwDgH//b8ek/P0P9a5VzQbBC6lXtQUMdxg7ovfAI//IS8ekBoRKI0Wde
|
||||
+r2IpM9hKSBU3c2gGXcJC
|
||||
-----END CERTIFICATE-----
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,967 +0,0 @@
|
||||
%define glib2_version 2.38.0
|
||||
|
||||
Name: libsoup
|
||||
Version: 2.62.3
|
||||
Release: 9%{?dist}
|
||||
Summary: Soup, an HTTP library implementation
|
||||
|
||||
License: LGPLv2
|
||||
URL: https://wiki.gnome.org/Projects/libsoup
|
||||
Source0: https://download.gnome.org/sources/%{name}/2.62/%{name}-%{version}.tar.xz
|
||||
|
||||
Patch0001: 0001-WebSockets-ignore-any-messages-after-close-has-been-.patch
|
||||
Patch0002: 0002-WebSockets-allow-null-characters-in-text-messages-da.patch
|
||||
Patch0003: 0003-WebSockets-only-poll-IO-stream-when-needed.patch
|
||||
Patch0004: 0004-ntlmv2.patch
|
||||
Patch0005: 0005-WebSockets-do-not-start-the-input-source-when-IO-is-closing.patch
|
||||
Patch0006: CVE-2024-52530.patch
|
||||
Patch0007: CVE-2024-52531.patch
|
||||
Patch0008: CVE-2024-52532.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/446
|
||||
Patch0009: test-cert-expiration.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/415
|
||||
Patch0010: CVE-2025-32050.patch
|
||||
Patch0011: CVE-2025-32052.patch
|
||||
Patch0012: CVE-2025-32053.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/440
|
||||
Patch0013: CVE-2025-32906.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/422
|
||||
Patch0014: CVE-2025-32911-CVE-2025-32913.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/421
|
||||
Patch0015: CVE-2025-46420.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436
|
||||
Patch0016: CVE-2025-46421.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/408 (simplified)
|
||||
Patch0017: CVE-2025-32049.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/450
|
||||
Patch0018: CVE-2025-32914.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/issues/422
|
||||
Patch0019: CVE-2025-2784.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463
|
||||
Patch0020: CVE-2025-4948.patch
|
||||
# https://issues.redhat.com/browse/RHEL-76426
|
||||
Patch0021: fix-ssl-test.patch
|
||||
# https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/454
|
||||
Patch0022: server-test-timeouts.patch
|
||||
|
||||
BuildRequires: chrpath
|
||||
BuildRequires: glib2-devel >= %{glib2_version}
|
||||
BuildRequires: glib-networking
|
||||
BuildRequires: intltool
|
||||
BuildRequires: krb5-devel >= 1.11
|
||||
BuildRequires: pkgconfig(gobject-introspection-1.0)
|
||||
BuildRequires: pkgconfig(libxml-2.0)
|
||||
BuildRequires: pkgconfig(sqlite3)
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: vala
|
||||
|
||||
Requires: glib2%{?_isa} >= %{glib2_version}
|
||||
Requires: glib-networking%{?_isa} >= %{glib2_version}
|
||||
|
||||
%description
|
||||
Libsoup is an HTTP library implementation in C. It was originally part
|
||||
of a SOAP (Simple Object Access Protocol) implementation called Soup, but
|
||||
the SOAP and non-SOAP parts have now been split into separate packages.
|
||||
|
||||
libsoup uses the Glib main loop and is designed to work well with GTK
|
||||
applications. This enables GNOME applications to access HTTP servers
|
||||
on the network in a completely asynchronous fashion, very similar to
|
||||
the Gtk+ programming model (a synchronous operation mode is also
|
||||
supported for those who want it).
|
||||
|
||||
%package devel
|
||||
Summary: Header files for the Soup library
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
Libsoup is an HTTP library implementation in C. This package allows
|
||||
you to develop applications that use the libsoup library.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
%configure --disable-static
|
||||
|
||||
# Omit unused direct shared library dependencies.
|
||||
sed --in-place --expression 's! -shared ! -Wl,--as-needed\0!g' libtool
|
||||
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
%make_install
|
||||
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la
|
||||
|
||||
# Remove lib64 rpaths
|
||||
chrpath --delete $RPM_BUILD_ROOT%{_libdir}/*.so
|
||||
|
||||
%find_lang libsoup
|
||||
|
||||
%files -f libsoup.lang
|
||||
%license COPYING
|
||||
%doc README NEWS AUTHORS
|
||||
%{_libdir}/lib*.so.*
|
||||
%{_libdir}/girepository-1.0/Soup*2.4.typelib
|
||||
|
||||
%files devel
|
||||
%{_includedir}/%{name}-2.4
|
||||
%{_includedir}/%{name}-gnome-2.4
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
%{_datadir}/gir-1.0/Soup*2.4.gir
|
||||
%{_datadir}/gtk-doc/html/%{name}-2.4
|
||||
%dir %{_datadir}/vala
|
||||
%dir %{_datadir}/vala/vapi
|
||||
%{_datadir}/vala/vapi/libsoup-2.4.deps
|
||||
%{_datadir}/vala/vapi/libsoup-2.4.vapi
|
||||
|
||||
%changelog
|
||||
* Thu May 22 2025 Michael Catanzaro <mcatanzaro@redhat.com> - 2.62.3-9
|
||||
- Add patches to improve test reliability
|
||||
- Backport patches for various CVEs
|
||||
Resolves: RHEL-85879
|
||||
Resolves: RHEL-92280
|
||||
Resolves: RHEL-93031
|
||||
Resolves: RHEL-93032
|
||||
|
||||
* Thu May 01 2025 Michael Catanzaro <mcatanzaro@redhat.com> - 2.62.3-8
|
||||
- Backport patches for various CVEs, plus test improvements
|
||||
Resolves: RHEL-85887
|
||||
Resolves: RHEL-85900
|
||||
Resolves: RHEL-85901
|
||||
Resolves: RHEL-87039
|
||||
Resolves: RHEL-87094
|
||||
Resolves: RHEL-87114
|
||||
Resolves: RHEL-88348
|
||||
Resolves: RHEL-88351
|
||||
|
||||
* Tue Jan 28 2025 Michael Catanzaro <mcatanzaro@redhat.com> - 2.62.3-7
|
||||
- Backport upstream patch for CVE-2024-52531 - buffer overflow via UTF-8 conversion in soup_header_parse_param_list_strict
|
||||
Resolves: RHEL-76376
|
||||
|
||||
* Tue Nov 12 2024 Tomas Popela <tpopela@redhat.com> - 2.62.3-6
|
||||
- Backport upstream patch for CVE-2024-52530 - HTTP request smuggling via stripping null bytes from the ends of header names
|
||||
- Backport upstream patch for CVE-2024-52532 - infinite loop while reading websocket data
|
||||
- Resolves: RHEL-67076
|
||||
- Resolves: RHEL-67067
|
||||
|
||||
* Tue Sep 05 2023 Milan Crha <mcrha@redhat.com> - 2.62.3-5
|
||||
- Resolves: RHEL-2240 (Correct BuildRequires for python3)
|
||||
|
||||
* Mon May 15 2023 Milan Crha <mcrha@redhat.com> - 2.62.3-4
|
||||
- Resolves: #2203398 (WebSocket server asserts when a client is closing the connection)
|
||||
|
||||
* Fri Sep 16 2022 Milan Crha <mcrha@redhat.com> - 2.62.3-3
|
||||
- Resolves: #1938011 (Support for NTLMv2 Authentication)
|
||||
|
||||
* Thu Aug 27 2020 Martin Pitt <mpitt@redhat.com> - 2.62.3-2
|
||||
- Some WebSocket fixes to unbreak cockpit-desktop (rhbz#1872270)
|
||||
|
||||
* Fri Aug 10 2018 Kalev Lember <klember@redhat.com> - 2.62.3-1
|
||||
- Update to 2.62.3
|
||||
|
||||
* Thu Jul 19 2018 Milan Crha <mcrha@redhat.com> - 2.62.2-2
|
||||
- Address some of the Coverity Scan and clang issues
|
||||
|
||||
* Wed Jul 04 2018 Milan Crha <mcrha@redhat.com> - 2.62.2-1
|
||||
- Update to 2.62.2
|
||||
- Backport upstream patch for CVE-2018-12910 - Crash in soup_cookie_jar.c:get_cookies() on empty hostnames
|
||||
|
||||
* Mon Apr 09 2018 Kalev Lember <klember@redhat.com> - 2.62.1-1
|
||||
- Update to 2.62.1
|
||||
|
||||
* Mon Mar 12 2018 Kalev Lember <klember@redhat.com> - 2.62.0-1
|
||||
- Update to 2.62.0
|
||||
|
||||
* Mon Mar 05 2018 Kalev Lember <klember@redhat.com> - 2.61.91-1
|
||||
- Update to 2.61.91
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.61.90-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Mon Feb 05 2018 Kalev Lember <klember@redhat.com> - 2.61.90-1
|
||||
- Update to 2.61.90
|
||||
- Drop ldconfig scriptlets
|
||||
|
||||
* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.61.2-2
|
||||
- Switch to %%ldconfig_scriptlets
|
||||
|
||||
* Tue Jan 09 2018 Kalev Lember <klember@redhat.com> - 2.61.2-1
|
||||
- Update to 2.61.2
|
||||
|
||||
* Wed Dec 20 2017 Kalev Lember <klember@redhat.com> - 2.61.1-1
|
||||
- Update to 2.61.1
|
||||
|
||||
* Thu Nov 16 2017 Milan Crha <mcrha@redhat.com> - 2.60.2-2
|
||||
- Add patch for RH bug #1458498 (Crash under soup_socket_new())
|
||||
|
||||
* Wed Nov 01 2017 Kalev Lember <klember@redhat.com> - 2.60.2-1
|
||||
- Update to 2.60.2
|
||||
|
||||
* Wed Oct 11 2017 Kalev Lember <klember@redhat.com> - 2.60.1-1
|
||||
- Update to 2.60.1
|
||||
- Remove lib64 rpaths
|
||||
|
||||
* Wed Sep 13 2017 Kalev Lember <klember@redhat.com> - 2.60.0-1
|
||||
- Update to 2.60.0
|
||||
|
||||
* Fri Aug 11 2017 Kalev Lember <klember@redhat.com> - 2.59.90.1-2
|
||||
- Bump and rebuild for an rpm signing issue
|
||||
|
||||
* Thu Aug 10 2017 Kalev Lember <klember@redhat.com> - 2.59.90.1-1
|
||||
- Update to 2.59.90.1 (CVE-2017-2885)
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.58.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.58.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Jun 30 2017 Tomas Popela <tpopela@redhat.com> - 2.58.1-2
|
||||
- Backport negotiate fixes
|
||||
|
||||
* Tue May 09 2017 Kalev Lember <klember@redhat.com> - 2.58.1-1
|
||||
- Update to 2.58.1
|
||||
|
||||
* Wed May 03 2017 Milan Crha <mcrha@redhat.com> - 2.58.0-2
|
||||
- Add patch for GNONE bug #781590 (Fails to connect to server due to request cancel)
|
||||
|
||||
* Thu Apr 20 2017 Kalev Lember <klember@redhat.com> - 2.58.0-1
|
||||
- Update to 2.58.0
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.57.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Dec 14 2016 David King <amigadave@amigadave.com> - 2.57.1-1
|
||||
- Update to 2.57.1
|
||||
|
||||
* Thu Sep 22 2016 Kalev Lember <klember@redhat.com> - 2.56.0-2
|
||||
- BR vala instead of obsolete vala-tools subpackage
|
||||
|
||||
* Mon Sep 19 2016 Kalev Lember <klember@redhat.com> - 2.56.0-1
|
||||
- Update to 2.56.0
|
||||
|
||||
* Wed Aug 17 2016 Kalev Lember <klember@redhat.com> - 2.55.90-1
|
||||
- Update to 2.55.90
|
||||
|
||||
* Tue Apr 26 2016 Milan Crha <mcrha@redhat.com> - 2.54.1-1
|
||||
- Update to 2.54.1
|
||||
- Remove patch for NTLM auth failure with latest samba (fixed upstream)
|
||||
|
||||
* Fri Apr 22 2016 Milan Crha <mcrha@redhat.com> - 2.54.0.1-3
|
||||
- Add 'BuildRequires: krb5-devel', to support WWW-Authenticate: Negotiate in runtime
|
||||
|
||||
* Tue Apr 19 2016 Milan Crha <mcrha@redhat.com> - 2.54.0.1-2
|
||||
- NTLM auth failure with latest samba (rh #1327072)
|
||||
|
||||
* Wed Mar 23 2016 Kalev Lember <klember@redhat.com> - 2.54.0.1-1
|
||||
- Update to 2.54.0.1
|
||||
|
||||
* Tue Mar 22 2016 Kalev Lember <klember@redhat.com> - 2.54.0-1
|
||||
- Update to 2.54.0
|
||||
|
||||
* Tue Mar 15 2016 Kalev Lember <klember@redhat.com> - 2.53.92-1
|
||||
- Update to 2.53.92
|
||||
|
||||
* Tue Feb 16 2016 Richard Hughes <rhughes@redhat.com> - 2.53.90-1
|
||||
- Update to 2.53.90
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.53.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Nov 25 2015 Kalev Lember <klember@redhat.com> - 2.53.2-1
|
||||
- Update to 2.53.2
|
||||
|
||||
* Wed Oct 28 2015 Kalev Lember <klember@redhat.com> - 2.53.1-1
|
||||
- Update to 2.53.1
|
||||
|
||||
* Mon Oct 12 2015 Kalev Lember <klember@redhat.com> - 2.52.1-1
|
||||
- Update to 2.52.1
|
||||
|
||||
* Mon Sep 21 2015 Kalev Lember <klember@redhat.com> - 2.52.0-1
|
||||
- Update to 2.52.0
|
||||
|
||||
* Tue Sep 15 2015 Richard Hughes <rhughes@redhat.com> - 2.51.92-1
|
||||
- Update to 2.51.92
|
||||
|
||||
* Mon Aug 17 2015 Kalev Lember <klember@redhat.com> - 2.51.90-1
|
||||
- Update to 2.51.90
|
||||
- Use make_install macro
|
||||
- Build vala bindings
|
||||
|
||||
* Tue Jun 23 2015 David King <amigadave@amigadave.com> - 2.51.3-1
|
||||
- Update to 2.51.3
|
||||
- Update URL
|
||||
- Use pkgconfig for BuildRequires
|
||||
- Preserve timestamps during install
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.50.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Mon Mar 23 2015 Kalev Lember <kalevlember@gmail.com> - 2.50.0-1
|
||||
- Update to 2.50.0
|
||||
|
||||
* Tue Mar 17 2015 Kalev Lember <kalevlember@gmail.com> - 2.49.92-1
|
||||
- Update to 2.49.92
|
||||
|
||||
* Tue Mar 03 2015 Kalev Lember <kalevlember@gmail.com> - 2.49.91.1-1
|
||||
- Update to 2.49.91.1
|
||||
|
||||
* Tue Mar 03 2015 Kalev Lember <kalevlember@gmail.com> - 2.49.91-1
|
||||
- Update to 2.49.91
|
||||
- Use the %%license macro for the COPYING file
|
||||
|
||||
* Tue Nov 25 2014 Kalev Lember <kalevlember@gmail.com> - 2.49.1-1
|
||||
- Update to 2.49.1
|
||||
|
||||
* Mon Sep 22 2014 Kalev Lember <kalevlember@gmail.com> - 2.48.0-1
|
||||
- Update to 2.48.0
|
||||
|
||||
* Mon Sep 15 2014 Kalev Lember <kalevlember@gmail.com> - 2.47.92-1
|
||||
- Update to 2.47.92
|
||||
- Tighten deps with the _isa macro
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.47.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Tue Jul 22 2014 Kalev Lember <kalevlember@gmail.com> - 2.47.4-1
|
||||
- Update to 2.47.4
|
||||
|
||||
* Tue Jun 24 2014 Richard Hughes <rhughes@redhat.com> - 2.47.3-1
|
||||
- Update to 2.47.3
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.46.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat Apr 05 2014 Kalev Lember <kalevlember@gmail.com> - 2.46.0-2
|
||||
- Update dep versions
|
||||
|
||||
* Mon Mar 24 2014 Richard Hughes <rhughes@redhat.com> - 2.46.0-1
|
||||
- Update to 2.46.0
|
||||
|
||||
* Tue Mar 18 2014 Richard Hughes <rhughes@redhat.com> - 2.45.92-1
|
||||
- Update to 2.45.92
|
||||
|
||||
* Tue Feb 18 2014 Richard Hughes <rhughes@redhat.com> - 2.45.90-1
|
||||
- Update to 2.45.90
|
||||
|
||||
* Tue Dec 17 2013 Richard Hughes <rhughes@redhat.com> - 2.45.3-1
|
||||
- Update to 2.45.3
|
||||
|
||||
* Thu Nov 14 2013 Richard Hughes <rhughes@redhat.com> - 2.44.2-1
|
||||
- Update to 2.44.2
|
||||
|
||||
* Tue Oct 29 2013 Richard Hughes <rhughes@redhat.com> - 2.44.1-1
|
||||
- Update to 2.44.1
|
||||
|
||||
* Sun Sep 29 2013 Dan Winship <danw@redhat.com> - 2.44.0-2
|
||||
- Fix hang on early close with streaming API
|
||||
|
||||
* Tue Sep 24 2013 Kalev Lember <kalevlember@gmail.com> - 2.44.0-1
|
||||
- Update to 2.44.0
|
||||
|
||||
* Tue Sep 17 2013 Kalev Lember <kalevlember@gmail.com> - 2.43.92-1
|
||||
- Update to 2.43.92
|
||||
|
||||
* Thu Aug 22 2013 Kalev Lember <kalevlember@gmail.com> - 2.43.90-1
|
||||
- Update to 2.43.90
|
||||
|
||||
* Fri Aug 09 2013 Kalev Lember <kalevlember@gmail.com> - 2.43.5-1
|
||||
- Update to 2.43.5
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.43.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Fri Jul 12 2013 Dan Winship <danw@redhat.com> - 2.43.4-1
|
||||
- Update to 2.43.4
|
||||
|
||||
* Sun Jun 02 2013 Kalev Lember <kalevlember@gmail.com> - 2.43.2-1
|
||||
- Update to 2.43.2
|
||||
|
||||
* Sat May 04 2013 Kalev Lember <kalevlember@gmail.com> - 2.43.1-1
|
||||
- Update to 2.43.1
|
||||
|
||||
* Mon Apr 29 2013 Kalev Lember <kalevlember@gmail.com> - 2.42.2-1
|
||||
- Update to 2.42.2
|
||||
|
||||
* Tue Apr 16 2013 Richard Hughes <rhughes@redhat.com> - 2.42.1-1
|
||||
- Update to 2.42.1
|
||||
|
||||
* Tue Mar 26 2013 Kalev Lember <kalevlember@gmail.com> - 2.42.0-1
|
||||
- Update to 2.42.0
|
||||
|
||||
* Tue Mar 19 2013 Richard Hughes <rhughes@redhat.com> - 2.41.92-1
|
||||
- Update to 2.41.92
|
||||
|
||||
* Thu Mar 7 2013 Matthias Clasen <mclasen@redhat.com> - 2.41.91-1
|
||||
- Update to 2.41.91
|
||||
|
||||
* Tue Feb 19 2013 Richard Hughes <rhughes@redhat.com> - 2.41.90-1
|
||||
- Update to 2.41.90
|
||||
|
||||
* Wed Feb 06 2013 Kalev Lember <kalevlember@gmail.com> - 2.41.5-1
|
||||
- Update to 2.41.5
|
||||
|
||||
* Tue Jan 15 2013 Matthias Clasen <mclasen@redhat.com> - 2.41.4-1
|
||||
- Updat e to 2.41.4
|
||||
|
||||
* Thu Dec 20 2012 Kalev Lember <kalevlember@gmail.com> - 2.41.3-1
|
||||
- Update to 2.41.3
|
||||
- Remove libgnome-keyring build dep; no longer used
|
||||
|
||||
* Tue Nov 20 2012 Richard Hughes <hughsient@gmail.com> - 2.41.2-1
|
||||
- Update to 2.41.2
|
||||
|
||||
* Fri Nov 09 2012 Kalev Lember <kalevlember@gmail.com> - 2.41.1-1
|
||||
- Update to 2.41.1
|
||||
|
||||
* Tue Oct 16 2012 Kalev Lember <kalevlember@gmail.com> - 2.40.1-1
|
||||
- Update to 2.40.1
|
||||
|
||||
* Tue Oct 2 2012 Matthias Clasen <mclasen@redhat.com> - 2.40.0-1
|
||||
- Update to 2.40.0
|
||||
|
||||
* Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.39.4.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Tue Jul 17 2012 Richard Hughes <hughsient@gmail.com> - 2.39.4.1-1
|
||||
- Update to 2.39.4.1
|
||||
|
||||
* Wed Jun 27 2012 Richard Hughes <hughsient@gmail.com> - 2.39.3-1
|
||||
- Update to 2.39.3
|
||||
|
||||
* Thu Jun 07 2012 Richard Hughes <hughsient@gmail.com> - 2.39.2-1
|
||||
- Update to 2.39.2
|
||||
|
||||
* Sat May 05 2012 Kalev Lember <kalevlember@gmail.com> - 2.39.1-1
|
||||
- Update to 2.39.1
|
||||
- Package the translations
|
||||
|
||||
* Tue Apr 17 2012 Kalev Lember <kalevlember@gmail.com> - 2.38.1-1
|
||||
- Update to 2.38.1
|
||||
|
||||
* Wed Mar 28 2012 Richard Hughes <hughsient@gmail.com> - 2.38.0-1
|
||||
- Update to 2.38.0
|
||||
|
||||
* Wed Mar 21 2012 Kalev Lember <kalevlember@gmail.com> - 2.37.92-1
|
||||
- Update to 2.37.92
|
||||
|
||||
* Mon Mar 5 2012 Matthias Clasen <mclasen@redhat.com> - 2.37.91-1
|
||||
- Update to 2.37.91
|
||||
|
||||
* Sat Feb 25 2012 Matthias Clasen <mclasen@redhat.com> - 2.37.90-1
|
||||
- Update to 2.37.90
|
||||
|
||||
* Mon Feb 13 2012 Matthias Clasen <mclasen@redhat.com> - 2.37.5.1-1
|
||||
- Update to 2.37.5.1
|
||||
|
||||
* Mon Feb 6 2012 Matthias Clasen <mclasen@redhat.com> - 2.37.5-1
|
||||
- Update to 2.37.5
|
||||
|
||||
* Tue Jan 17 2012 Matthias Clasen <mclasen@redhat.com> - 2.37.4-1
|
||||
- Update to 2.37.4
|
||||
|
||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.37.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Tue Dec 20 2011 Matthias Clasen <mclasen@redhat.com> - 2.37.3-1
|
||||
- Update to 2.37.3
|
||||
|
||||
* Mon Nov 21 2011 Matthias Clasen <mclasen@redhat.com> - 2.37.2-1
|
||||
- Update to 2.37.2
|
||||
|
||||
* Wed Nov 2 2011 Matthias Clasen <mclasen@redhat.com> - 2.37.1-1
|
||||
- Update to 2.37.1
|
||||
|
||||
* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.36.1-2
|
||||
- Rebuilt for glibc bug#747377
|
||||
|
||||
* Tue Oct 18 2011 Matthias Clasen <mclasen@redhat.com> - 2.36.1-1
|
||||
- Update to 2.36.1
|
||||
|
||||
* Mon Sep 26 2011 Ray <rstrode@redhat.com> - 2.36.0-1
|
||||
- Update to 2.36.0
|
||||
|
||||
* Mon Sep 19 2011 Matthias Clasen <mclasen@redhat.com> 2.35.92-1
|
||||
- Update to 2.35.92
|
||||
|
||||
* Tue Aug 30 2011 Matthias Clasen <mclasen@redhat.com> 2.35.90-1
|
||||
- Update to 2.35.90
|
||||
|
||||
* Wed Aug 17 2011 Matthias Clasen <mclasen@redhat.com> 2.35.5-1
|
||||
- Update to 2.35.5
|
||||
|
||||
* Tue Jul 05 2011 Bastien Nocera <bnocera@redhat.com> 2.35.3-1
|
||||
- Update to 2.35.3
|
||||
|
||||
* Tue Apr 26 2011 Matthias Clasen <mclasen@redhat.com> - 2.34.1-1
|
||||
- Update to 2.34.1
|
||||
|
||||
* Mon Apr 4 2011 Matthias Clasen <mclasen@redhat.com> - 2.34.0-1
|
||||
- Update to 2.34.0
|
||||
|
||||
* Tue Mar 22 2011 Matthias Clasen <mclasen@redhat.com> - 2.33.92-2
|
||||
- Clean up BRs
|
||||
|
||||
* Tue Mar 22 2011 Matthias Clasen <mclasen@redhat.com> - 2.33.92-1
|
||||
- 2.33.92
|
||||
|
||||
* Tue Feb 22 2011 Matthias Clasen <mclasen@redhat.com> - 2.33.90-1
|
||||
- 2.33.90
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.33.6-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Wed Feb 2 2011 Christopher Aillon <caillon@redhat.com> - 2.33.6-1
|
||||
- Update to 2.33.6
|
||||
|
||||
* Mon Jan 17 2011 Dan Winship <danw@redhat.com> - 2.33.5-2
|
||||
- Require glib-networking, for TLS support
|
||||
|
||||
* Mon Jan 10 2011 Matthias Clasen <mclasen@redhat.com> - 2.33.5-1
|
||||
- Update to 2.33.5
|
||||
|
||||
* Thu Dec 2 2010 Dan Winship <danw@redhat.com> - 2.32.2-1
|
||||
- Update to 2.32.2
|
||||
|
||||
* Thu Nov 11 2010 Dan Horák <dan[at]danny.cz> - 2.32.0-2
|
||||
- bump release to win over F-14
|
||||
|
||||
* Tue Sep 28 2010 Matthias Clasen <mclasen@redhat.com> - 2.32.0-1
|
||||
- Update to 2.32.0
|
||||
|
||||
* Tue Sep 21 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.92-1
|
||||
- Update to 2.31.92
|
||||
|
||||
* Wed Aug 18 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.90-1
|
||||
- Update to 2.31.90
|
||||
|
||||
* Tue Aug 3 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.6-1
|
||||
- Update to 2.31.6
|
||||
|
||||
* Thu Jul 15 2010 Colin Walters <walters@verbum.org> - 2.31.2-5
|
||||
- Rebuild with new gobject-introspection
|
||||
|
||||
* Fri Jul 2 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.2-4
|
||||
- Rebuild for introspection format break
|
||||
|
||||
* Wed Jun 23 2010 Matthew Barnes <mbarnes@redhat.com> - 2.31.2-3
|
||||
- libsoup-devel doesn't need gtk-doc (RH bug #604396).
|
||||
|
||||
* Mon Jun 21 2010 Peter Robinson <pbrobinson@gmail.com> - 2.31.2-2
|
||||
- enable introspection support
|
||||
|
||||
* Thu May 27 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.2-1
|
||||
- Update to 2.31.2
|
||||
|
||||
* Tue Apr 27 2010 Matthias Clasen <mclasen@redhat.com> - 2.30.1-1
|
||||
- Update to 2.30.1
|
||||
|
||||
* Mon Mar 29 2010 Matthias Clasen <mclasen@redhat.com> - 2.30.0-1
|
||||
- Update to 2.30.0
|
||||
|
||||
* Thu Mar 25 2010 Nils Philippsen <nils@redhat.com> - 2.29.91-2
|
||||
- rebuild for new libproxy
|
||||
|
||||
* Mon Feb 22 2010 Matthias Clasen <mclasen@redhat.com> - 2.29.91-1
|
||||
- Update to 2.29.91
|
||||
|
||||
* Mon Feb 08 2010 Matthew Barnes <mbarnes@redhat.com> - 2.29.90-1
|
||||
- Update to 2.29.90
|
||||
|
||||
* Tue Jan 26 2010 Matthias Clasen <mclasen@redhat.com> - 2.29.6-1
|
||||
- Update to 2.29.6
|
||||
|
||||
* Sat Jan 16 2010 Matthias Clasen <mclasen@redhat.com> - 2.29.5-1
|
||||
- Update to 2.29.5
|
||||
|
||||
* Wed Dec 9 2009 Dan Winship <danw@redhat.com> - 2.29.3-2
|
||||
- Add patch from git to fix gir-repository build
|
||||
|
||||
* Tue Dec 01 2009 Bastien Nocera <bnocera@redhat.com> 2.29.3-1
|
||||
- Update to 2.29.3
|
||||
|
||||
* Mon Sep 21 2009 Matthias Clasen <mclasen@redhat.com> - 2.28.0-1
|
||||
- Update to 2.28.0
|
||||
|
||||
* Mon Sep 7 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.92-1
|
||||
- Update to 2.27.92
|
||||
|
||||
* Mon Aug 24 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.91-1
|
||||
- Update to 2.27.91
|
||||
|
||||
* Tue Aug 11 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.90-1
|
||||
- Update to 2.27.90
|
||||
|
||||
* Tue Jul 28 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.5-1
|
||||
- Update to 2.27.5
|
||||
|
||||
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.27.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Mon Jul 13 2009 Matthew Barnes <mbarnes@redhat.com> - 2.27.4-1
|
||||
- Update to 2.27.4
|
||||
|
||||
* Wed Jun 17 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.2-1
|
||||
- Update to 2.27.2
|
||||
|
||||
* Mon May 18 2009 Bastien Nocera <bnocera@redhat.com> 2.27.1-1
|
||||
- Update to 2.27.1
|
||||
|
||||
* Mon Apr 13 2009 Matthias Clasen <mclasen@redhat.com> - 2.26.1-1
|
||||
- Update to 2.26.1
|
||||
- See http://download.gnome.org/sources/libsoup/2.26/libsoup-2.26.1.changes
|
||||
|
||||
* Thu Apr 9 2009 Matthias Clasen <mclasen@redhat.com> - 2.26.0.9-1
|
||||
- Upate to 2.26.0.9
|
||||
|
||||
* Mon Mar 16 2009 Matthias Clasen <mclasen@redhat.com> - 2.26.0-1
|
||||
- Update to 2.26.0
|
||||
|
||||
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.25.91-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
|
||||
* Mon Feb 16 2009 Matthew Barnes <mbarnes@redhat.com> - 2.25.91-1
|
||||
- Update to 2.25.91
|
||||
|
||||
* Mon Feb 02 2009 Matthew Barnes <mbarnes@redhat.com> - 2.25.5-1
|
||||
- Update to 2.25.5
|
||||
|
||||
* Sun Jan 25 2009 Matthias Clasen <mclasen@redhat.com> - 2.25.4-2
|
||||
- Build against libproxy
|
||||
|
||||
* Mon Jan 05 2009 Matthew Barnes <mbarnes@redhat.com> - 2.25.4-1
|
||||
- Update to 2.25.4
|
||||
|
||||
* Tue Dec 16 2008 Matthew Barnes <mbarnes@redhat.com> - 2.25.3-1
|
||||
- Update to 2.25.3
|
||||
|
||||
* Mon Dec 01 2008 Matthew Barnes <mbarnes@redhat.com> - 2.25.2-1
|
||||
- Update to 2.25.2
|
||||
|
||||
* Wed Nov 12 2008 Matthias Clasen <mclasen@redhat.com> - 2.25.1-3
|
||||
- Fix BuildRequires
|
||||
|
||||
* Fri Nov 07 2008 Matthew Barnes <mbarnes@redhat.com> - 2.25.1-1
|
||||
- Update to 2.25.1
|
||||
|
||||
* Mon Oct 20 2008 Matthias Clasen <mclasen@redhat.com> - 2.24.1-1
|
||||
- Update to 2.24.1
|
||||
|
||||
* Wed Sep 24 2008 Matthias Clasen <mclasen@redhat.com> - 2.24.0.1-1
|
||||
- Update to 2.24.0.1
|
||||
|
||||
* Mon Sep 22 2008 Matthias Clasen <mclasen@redhat.com> - 2.24.0-1
|
||||
- Update to 2.24.0
|
||||
|
||||
* Mon Sep 8 2008 Matthias Clasen <mclasen@redhat.com> - 2.23.92-1
|
||||
- Update to 2.23.92
|
||||
|
||||
* Mon Sep 01 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.91-1
|
||||
- Update to 2.23.91
|
||||
|
||||
* Mon Aug 04 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.6-1
|
||||
- Update to 2.23.6
|
||||
|
||||
* Wed Jul 30 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.1-6
|
||||
- Omit unused direct shared library dependencies (RH bug #226046).
|
||||
|
||||
* Tue Jun 24 2008 Tomas Mraz <tmraz@redhat.com> - 2.23.1-5
|
||||
- rebuild with new gnutls
|
||||
|
||||
* Sun Jun 22 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.1-4
|
||||
- Remove unnecessary pkgconfig build requirement.
|
||||
|
||||
* Mon Jun 16 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.1-3
|
||||
- Incorporate package review feedback (RH bug #226046).
|
||||
|
||||
* Sun May 4 2008 Matthias Clasen <mclasen@redhat.com> - 2.23.1-2
|
||||
- Fix source url
|
||||
|
||||
* Mon Apr 21 2008 Matthew Barnes <mbarnes@redhat.com> - 2.23.1-1
|
||||
- Update to 2.23.1
|
||||
|
||||
* Mon Apr 07 2008 Matthew Barnes <mbarnes@redhat.com> - 2.4.1-1
|
||||
- Update to 2.4.1
|
||||
|
||||
* Mon Mar 10 2008 Matthias Clasen <mclasen@redhat.com> - 2.4.0-1
|
||||
- Update to 2.4.0
|
||||
|
||||
* Mon Feb 25 2008 Matthew Barnes <mbarnes@redhat.com> - 2.3.4-1
|
||||
- Update to 2.3.4
|
||||
|
||||
* Wed Feb 13 2008 Matthew Barnes <mbarnes@redhat.com> - 2.3.2-1
|
||||
- Update to 2.3.2
|
||||
|
||||
* Mon Jan 28 2008 Matthew Barnes <mbarnes@redhat.com> - 2.3.0-1
|
||||
- Update to 2.3.0
|
||||
- Bump glib2 requirement to >= 2.15.3.
|
||||
- Clean up some redundant dependencies.
|
||||
- Remove patch for RH bug #327871 (fixed in glibc).
|
||||
|
||||
* Mon Nov 26 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.104-1
|
||||
- Update to 2.2.104
|
||||
|
||||
* Sun Oct 28 2007 Jeremy Katz <katzj@redhat.com> - 2.2.103-1
|
||||
- update to 2.2.103 to fix a rhythmbox crasher (#343561)
|
||||
|
||||
* Mon Oct 15 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.102-1
|
||||
- Update to 2.2.102
|
||||
|
||||
* Thu Oct 11 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.101-2
|
||||
- Add patch for RH bug #327871 (broken Rhythmbox build).
|
||||
- Suspect this is really a glibc bug.
|
||||
|
||||
* Fri Oct 05 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.101-1
|
||||
- Update to 2.2.101
|
||||
|
||||
* Wed Aug 8 2007 Matthias Clasen <mclasen@redhat.com> - 2.2.100-3
|
||||
- Update the license field
|
||||
|
||||
* Sat Apr 21 2007 Matthias Clasen <mclasen@redhat.com> - 2.2.100-2
|
||||
- Don't install INSTALL
|
||||
|
||||
* Mon Feb 12 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.100-1
|
||||
- Update to 2.2.100
|
||||
|
||||
* Mon Jan 08 2007 Matthew Barnes <mbarnes@redhat.com> - 2.2.99-1
|
||||
- Update to 2.2.99
|
||||
|
||||
* Tue Nov 21 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.98-1
|
||||
- Update to 2.2.98
|
||||
- Remove patch for RH bug #215919 (fixed upstream).
|
||||
|
||||
* Fri Nov 17 2006 Matthias Clasen <mclasen@redhat.com> - 2.2.97-2
|
||||
- Avoid accidentally exported symbols (#215919)
|
||||
|
||||
* Mon Nov 06 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.97-1
|
||||
- Update to 2.2.97
|
||||
- Remove patch for Gnome.org bug #356809 (fixed upstream).
|
||||
|
||||
* Fri Nov 03 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.96-5
|
||||
- Revised patch for Gnome.org bug #356809 to match upstream.
|
||||
|
||||
* Sun Oct 01 2006 Jesse Keating <jkeating@redhat.com> - 2.2.96-4
|
||||
- rebuilt for unwind info generation, broken in gcc-4.1.1-21
|
||||
|
||||
* Wed Sep 20 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.96-3.fc6
|
||||
- Add patch for Gnome.org bug #356809 (lingering file on uninstall).
|
||||
|
||||
* Tue Aug 15 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.96-2.fc6
|
||||
- Rebuild
|
||||
|
||||
* Tue Jul 25 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.96
|
||||
- Update to 2.2.96
|
||||
- Bump glib2 requirement to >= 2.6.
|
||||
|
||||
* Wed Jul 12 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.95.1-1
|
||||
- Update to 2.2.95.1
|
||||
|
||||
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.2.94-3.1
|
||||
- rebuild
|
||||
|
||||
* Wed Jun 14 2006 Tomas Mraz <tmraz@redhat.com> - 2.2.94-3
|
||||
- rebuilt with new gnutls
|
||||
|
||||
* Tue Jun 13 2006 Matthias Clasen <mclasen@redhat.com> - 2.2.94-1
|
||||
- Update to 2.2.94
|
||||
|
||||
* Mon Apr 10 2006 Matthias Clasen <mclasen@redhat.com> - 2.2.92-2
|
||||
- Update to 2.2.92
|
||||
|
||||
* Sat Mar 4 2006 Matthias Clasen <mclasen@redhat.com> - 2.2.91-1
|
||||
- Update to 2.2.91
|
||||
|
||||
* Wed Feb 15 2006 Matthias Clasen <mclasen@redhat.com> - 2.2.7-2
|
||||
- Remove excessive Requires for the -devel package
|
||||
|
||||
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 2.2.7-1.2.1
|
||||
- bump again for double-long bug on ppc(64)
|
||||
|
||||
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 2.2.7-1.2
|
||||
- rebuilt for new gcc4.1 snapshot and glibc changes
|
||||
|
||||
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Tue Nov 29 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.7-1
|
||||
- 2.2.7
|
||||
- Remove static library
|
||||
|
||||
* Tue Aug 23 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.6.1-1
|
||||
- 2.2.6.1
|
||||
|
||||
* Tue Aug 9 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.5-1
|
||||
- 2.2.5
|
||||
- Removed gnome-bug-306877-soup-connection-ntlm.c.patch (#160071) as this is
|
||||
now in upstream tarball
|
||||
|
||||
* Mon Aug 8 2005 Tomas Mraz <tmraz@redhat.com> - 2.2.3-5
|
||||
- rebuild with new gnutls
|
||||
|
||||
* Tue Jun 14 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.3-4
|
||||
- add patch for NTLM domains (#160071)
|
||||
|
||||
* Sun Apr 24 2005 Florian La Roche <laroche@redhat.com>
|
||||
- rebuild for new gnutls
|
||||
|
||||
* Thu Mar 17 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.3-2
|
||||
- explicitly enable gtk-doc support
|
||||
|
||||
* Thu Mar 17 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.3-1
|
||||
- 2.2.3
|
||||
|
||||
* Wed Mar 2 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.2-3
|
||||
- rebuild with GCC 4
|
||||
|
||||
* Wed Jan 26 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.2-2
|
||||
- actually uploaded the source this time
|
||||
|
||||
* Wed Jan 26 2005 David Malcolm <dmalcolm@redhat.com> - 2.2.2-1
|
||||
- update from 2.2.1 to 2.2.2
|
||||
- add explicit devel requirements on glib2-devel, pkgconfig, gtk-doc, gnutls-devel and libxml2-devel
|
||||
|
||||
* Tue Oct 12 2004 David Malcolm <dmalcolm@redhat.com> - 2.2.1-1
|
||||
- update from 2.2.0 to 2.2.1
|
||||
|
||||
* Wed Oct 6 2004 David Malcolm <dmalcolm@redhat.com> - 2.2.0-3
|
||||
- added requirement on libxml2 (#134700)
|
||||
|
||||
* Wed Sep 22 2004 David Malcolm <dmalcolm@redhat.com> - 2.2.0-2
|
||||
- added requirement on gnutls, so that we build with SSL support
|
||||
- fixed source download path
|
||||
|
||||
* Tue Aug 31 2004 David Malcolm <dmalcolm@redhat.com> - 2.2.0-1
|
||||
- update from 2.1.13 to 2.2.0
|
||||
|
||||
* Mon Aug 16 2004 David Malcolm <dmalcolm@redhat.com> - 2.1.13-1
|
||||
- 2.1.13
|
||||
|
||||
* Tue Jul 20 2004 David Malcolm <dmalcolm@redhat.com> - 2.1.12-1
|
||||
- 2.1.12
|
||||
|
||||
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Mon Jun 7 2004 David Malcolm <dmalcolm@redhat.com> - 2.1.11-1
|
||||
- 2.1.11
|
||||
|
||||
* Thu May 20 2004 David Malcolm <dmalcolm@redhat.com> - 2.1.10-2
|
||||
- added missing md5 file
|
||||
|
||||
* Thu May 20 2004 David Malcolm <dmalcolmredhat.com> - 2.1.10-1
|
||||
- 2.1.10
|
||||
|
||||
* Tue Apr 20 2004 David Malcolm <dmalcolm@redhat.com> - 2.1.9-1
|
||||
- Update to 2.1.9; added gtk-doc to BuildRequires and the generated files to the devel package
|
||||
|
||||
* Wed Mar 10 2004 Jeremy Katz <katzj@redhat.com> - 2.1.8-1
|
||||
- 2.1.8
|
||||
|
||||
* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Tue Feb 17 2004 Jeremy Katz <katzj@redhat.com> - 2.1.7-1
|
||||
- 2.1.7
|
||||
|
||||
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Mon Jan 26 2004 Jeremy Katz <katzj@redhat.com> 2.1.5-1
|
||||
- 2.1.5
|
||||
|
||||
* Wed Jan 14 2004 Jeremy Katz <katzj@redhat.com> 2.1.4-0
|
||||
- update to 2.1.4
|
||||
|
||||
* Sat Jan 3 2004 Jeremy Katz <katzj@redhat.com> 2.1.3-0
|
||||
- update to 2.1.3
|
||||
|
||||
* Tue Sep 23 2003 Jeremy Katz <katzj@redhat.com> 1.99.26-2
|
||||
- rebuild
|
||||
|
||||
* Fri Sep 19 2003 Jeremy Katz <katzj@redhat.com> 1.99.26-1
|
||||
- 1.99.26
|
||||
|
||||
* Tue Jul 15 2003 Jeremy Katz <katzj@redhat.com> 1.99.23-3
|
||||
- rebuild to pickup ppc64
|
||||
|
||||
* Mon Jun 9 2003 Jeremy Katz <katzj@redhat.com> 1.99.23-2
|
||||
- rebuild
|
||||
- no openssl on ppc64 yet, excludearch
|
||||
|
||||
* Mon Jun 9 2003 Jeremy Katz <katzj@redhat.com> 1.99.23-1
|
||||
- 1.99.23
|
||||
|
||||
* Thu Jun 5 2003 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Thu Jun 5 2003 Jeremy Katz <katzj@redhat.com> 1.99.22-2
|
||||
- rebuild
|
||||
|
||||
* Sun May 25 2003 Jeremy Katz <katzj@redhat.com> 1.99.22-1
|
||||
- 1.99.22
|
||||
|
||||
* Tue May 6 2003 Jeremy Katz <katzj@redhat.com> 1.99.20-1
|
||||
- 1.99.20
|
||||
|
||||
* Sun May 4 2003 Jeremy Katz <katzj@redhat.com> 1.99.17-3
|
||||
- include ssl proxy so that ssl urls work properly (#90165, #90166)
|
||||
|
||||
* Wed Apr 16 2003 Jeremy Katz <katzj@redhat.com> 1.99.17-2
|
||||
- forward port patch to use a union initializer to fix build on x86_64
|
||||
|
||||
* Wed Apr 16 2003 Jeremy Katz <katzj@redhat.com> 1.99.17-1
|
||||
- rename package to libsoup
|
||||
- update to 1.99.17
|
||||
- don't obsolete soup for now, it's parallel installable
|
||||
|
||||
* Sun Apr 6 2003 Jeremy Katz <katzj@redhat.com> 0.7.11-1
|
||||
- update to 0.7.11
|
||||
|
||||
* Wed Apr 2 2003 Matt Wilson <msw@redhat.com> 0.7.10-5
|
||||
- added soup-0.7.10-64bit.patch to fix 64 bit platforms (#86347)
|
||||
|
||||
* Sat Feb 01 2003 Florian La Roche <Florian.LaRoche@redhat.de>
|
||||
- only runtime libs in normal rpm
|
||||
|
||||
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Tue Jan 21 2003 Jeremy Katz <katzj@redhat.com>
|
||||
- update url (#82347)
|
||||
|
||||
* Tue Jan 7 2003 Nalin Dahyabhai <nalin@redhat.com> 0.7.10-2
|
||||
- use pkgconfig's openssl configuration information, if it exists
|
||||
|
||||
* Fri Dec 13 2002 Jeremy Katz <katzj@redhat.com> 0.7.10-1
|
||||
- update to 0.7.10
|
||||
|
||||
* Thu Dec 12 2002 Jeremy Katz <katzj@redhat.com> 0.7.9-4
|
||||
- fix fpic patch
|
||||
- soup-devel should require soup
|
||||
|
||||
* Thu Dec 12 2002 Jeremy Katz <katzj@redhat.com> 0.7.9-3
|
||||
- better lib64 patch
|
||||
- fix building of libwsdl-build to use libtool so that it gets built
|
||||
with -fPIC as needed
|
||||
|
||||
* Tue Dec 10 2002 Jeremy Katz <katzj@redhat.com> 0.7.9-2
|
||||
- change popt handling in configure slightly so that it will work on
|
||||
multilib arches
|
||||
|
||||
* Tue Dec 10 2002 Jeremy Katz <katzj@redhat.com> 0.7.9-1
|
||||
- update to 0.7.9, pulling the tarball out of Ximian packages
|
||||
|
||||
* Wed Oct 23 2002 Jeremy Katz <katzj@redhat.com> 0.7.4-3
|
||||
- fix to not try to include non-existent doc files and remove all
|
||||
unwanted files from the build
|
||||
- include api docs
|
||||
- don't build the apache module
|
||||
|
||||
* Wed Sep 25 2002 Jeremy Katz <katzj@redhat.com> 0.7.4-2
|
||||
- various specfile tweaks to include in Red Hat Linux
|
||||
- include all the files
|
||||
|
||||
* Tue Jan 23 2001 Alex Graveley <alex@ximian.com>
|
||||
- Inital RPM config.
|
1
dead.package
Normal file
1
dead.package
Normal file
@ -0,0 +1 @@
|
||||
libsoup was removed due to minimization efforts prior to public launch
|
Loading…
Reference in New Issue
Block a user