mirror of
https://github.com/weechat/weechat.git
synced 2026-07-01 15:26:37 +02:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b5da3c6cb | |||
| e852cef92a | |||
| 84e44632e5 | |||
| 77bbd5f875 |
@@ -7,7 +7,7 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
|
|
||||||
name: ${{ matrix.config.name }}
|
name: ${{ matrix.config.name }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-18.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
|||||||
@@ -15,6 +15,13 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
|
|||||||
(file _ReleaseNotes.adoc_ in sources).
|
(file _ReleaseNotes.adoc_ in sources).
|
||||||
|
|
||||||
|
|
||||||
|
[[v3.0.2]]
|
||||||
|
== Version 3.0.2 (under dev)
|
||||||
|
|
||||||
|
Bug fixes::
|
||||||
|
|
||||||
|
* relay: fix crash when decoding a malformed websocket frame (CVE-2021-40516)
|
||||||
|
|
||||||
[[v3.0.1]]
|
[[v3.0.1]]
|
||||||
== Version 3.0.1 (2021-01-31)
|
== Version 3.0.1 (2021-01-31)
|
||||||
|
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
index_buffer = 0;
|
index_buffer = 0;
|
||||||
|
|
||||||
/* loop to decode all frames in message */
|
/* loop to decode all frames in message */
|
||||||
while (index_buffer + 2 <= buffer_length)
|
while (index_buffer + 1 < buffer_length)
|
||||||
{
|
{
|
||||||
opcode = buffer[index_buffer] & 15;
|
opcode = buffer[index_buffer] & 15;
|
||||||
|
|
||||||
@@ -293,10 +293,12 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
length_frame_size = 1;
|
length_frame_size = 1;
|
||||||
length_frame = buffer[index_buffer + 1] & 127;
|
length_frame = buffer[index_buffer + 1] & 127;
|
||||||
index_buffer += 2;
|
index_buffer += 2;
|
||||||
|
if (index_buffer >= buffer_length)
|
||||||
|
return 0;
|
||||||
if ((length_frame == 126) || (length_frame == 127))
|
if ((length_frame == 126) || (length_frame == 127))
|
||||||
{
|
{
|
||||||
length_frame_size = (length_frame == 126) ? 2 : 8;
|
length_frame_size = (length_frame == 126) ? 2 : 8;
|
||||||
if (buffer_length < 1 + length_frame_size)
|
if (index_buffer + length_frame_size > buffer_length)
|
||||||
return 0;
|
return 0;
|
||||||
length_frame = 0;
|
length_frame = 0;
|
||||||
for (i = 0; i < length_frame_size; i++)
|
for (i = 0; i < length_frame_size; i++)
|
||||||
@@ -306,10 +308,9 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
index_buffer += length_frame_size;
|
index_buffer += length_frame_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer_length < 1 + length_frame_size + 4 + length_frame)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* read masks (4 bytes) */
|
/* read masks (4 bytes) */
|
||||||
|
if (index_buffer + 4 > buffer_length)
|
||||||
|
return 0;
|
||||||
int masks[4];
|
int masks[4];
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
@@ -333,6 +334,11 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
*decoded_length += 1;
|
*decoded_length += 1;
|
||||||
|
|
||||||
/* decode data using masks */
|
/* decode data using masks */
|
||||||
|
if ((length_frame > buffer_length)
|
||||||
|
|| (index_buffer + length_frame > buffer_length))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
for (i = 0; i < length_frame; i++)
|
for (i = 0; i < length_frame; i++)
|
||||||
{
|
{
|
||||||
decoded[*decoded_length + i] = (int)((unsigned char)buffer[index_buffer + i]) ^ masks[i % 4];
|
decoded[*decoded_length + i] = (int)((unsigned char)buffer[index_buffer + i]) ^ masks[i % 4];
|
||||||
|
|||||||
+2
-2
@@ -33,8 +33,8 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
WEECHAT_STABLE=3.0.1
|
WEECHAT_STABLE=3.0.1
|
||||||
WEECHAT_DEVEL=3.0.1
|
WEECHAT_DEVEL=3.0.2
|
||||||
WEECHAT_DEVEL_FULL=3.0.1
|
WEECHAT_DEVEL_FULL=3.0.2-dev
|
||||||
|
|
||||||
if [ $# -lt 1 ]; then
|
if [ $# -lt 1 ]; then
|
||||||
echo >&2 "Syntax: $0 stable|devel|devel-full|devel-major|devel-minor|devel-patch"
|
echo >&2 "Syntax: $0 stable|devel|devel-full|devel-major|devel-minor|devel-patch"
|
||||||
|
|||||||
Reference in New Issue
Block a user