Update to 20.12.1 for fix CVE-2024-27982,CVE-2024-27983,CVE-2024-30260 and CVE-2024-30261
(cherry picked from commit b51d0c45f1acabe35ab3ed9a37029e8c4bcbb7b6)
This commit is contained in:
parent
51e2fa3a87
commit
b75ca91982
@ -1,141 +0,0 @@
|
|||||||
From 1dd706c8c473b31bcef269d6ecde6fc72200ce89 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eustace <eusteuc@outlook.com>
|
|
||||||
Date: Mon, 18 Mar 2024 09:31:46 +0800
|
|
||||||
Subject: [PATCH] Revert "deps: V8: cherry-pick 13192d6e10fa"
|
|
||||||
|
|
||||||
"Tagged" is at an unfinished state here yet.
|
|
||||||
This reverts commit bc2ebb972b34f54e042de9636e7451d2526436a9.
|
|
||||||
---
|
|
||||||
deps/v8/src/builtins/riscv/builtins-riscv.cc | 2 +-
|
|
||||||
deps/v8/src/codegen/riscv/assembler-riscv-inl.h | 16 ++++++++--------
|
|
||||||
deps/v8/src/codegen/riscv/assembler-riscv.h | 2 +-
|
|
||||||
deps/v8/src/execution/riscv/simulator-riscv.cc | 8 ++++----
|
|
||||||
.../regexp/riscv/regexp-macro-assembler-riscv.cc | 2 +-
|
|
||||||
5 files changed, 15 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/deps/v8/src/builtins/riscv/builtins-riscv.cc b/deps/v8/src/builtins/riscv/builtins-riscv.cc
|
|
||||||
index d6091434b9..3404562785 100644
|
|
||||||
--- a/deps/v8/src/builtins/riscv/builtins-riscv.cc
|
|
||||||
+++ b/deps/v8/src/builtins/riscv/builtins-riscv.cc
|
|
||||||
@@ -1512,7 +1512,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
|
||||||
// Set the return address to the correct point in the interpreter entry
|
|
||||||
// trampoline.
|
|
||||||
Label builtin_trampoline, trampoline_loaded;
|
|
||||||
- Tagged<Smi> interpreter_entry_return_pc_offset(
|
|
||||||
+ Smi interpreter_entry_return_pc_offset(
|
|
||||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
|
||||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::zero());
|
|
||||||
|
|
||||||
diff --git a/deps/v8/src/codegen/riscv/assembler-riscv-inl.h b/deps/v8/src/codegen/riscv/assembler-riscv-inl.h
|
|
||||||
index ca6d641e2c..55f191e6af 100644
|
|
||||||
--- a/deps/v8/src/codegen/riscv/assembler-riscv-inl.h
|
|
||||||
+++ b/deps/v8/src/codegen/riscv/assembler-riscv-inl.h
|
|
||||||
@@ -128,9 +128,9 @@ Handle<HeapObject> Assembler::compressed_embedded_object_handle_at(
|
|
||||||
}
|
|
||||||
|
|
||||||
void Assembler::deserialization_set_special_target_at(
|
|
||||||
- Address instruction_payload, Tagged<Code> code, Address target) {
|
|
||||||
+ Address instruction_payload, Code code, Address target) {
|
|
||||||
set_target_address_at(instruction_payload,
|
|
||||||
- !code.is_null() ? code->constant_pool() : kNullAddress,
|
|
||||||
+ !code.is_null() ? code.constant_pool() : kNullAddress,
|
|
||||||
target);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -159,13 +159,12 @@ void Assembler::deserialization_set_target_internal_reference_at(
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-Tagged<HeapObject> RelocInfo::target_object(PtrComprCageBase cage_base) {
|
|
||||||
+HeapObject RelocInfo::target_object(PtrComprCageBase cage_base) {
|
|
||||||
DCHECK(IsCodeTarget(rmode_) || IsEmbeddedObjectMode(rmode_));
|
|
||||||
if (IsCompressedEmbeddedObject(rmode_)) {
|
|
||||||
- return HeapObject::cast(
|
|
||||||
- Tagged<Object>(V8HeapCompressionScheme::DecompressTagged(
|
|
||||||
- cage_base,
|
|
||||||
- Assembler::target_compressed_address_at(pc_, constant_pool_))));
|
|
||||||
+ return HeapObject::cast(Object(V8HeapCompressionScheme::DecompressTagged(
|
|
||||||
+ cage_base,
|
|
||||||
+ Assembler::target_compressed_address_at(pc_, constant_pool_))));
|
|
||||||
} else {
|
|
||||||
return HeapObject::cast(
|
|
||||||
Object(Assembler::target_address_at(pc_, constant_pool_)));
|
|
||||||
@@ -187,7 +186,8 @@ Handle<HeapObject> RelocInfo::target_object_handle(Assembler* origin) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-void RelocInfo::set_target_object(Tagged<HeapObject> target,
|
|
||||||
+void RelocInfo::set_target_object(Heap* heap, HeapObject target,
|
|
||||||
+ WriteBarrierMode write_barrier_mode,
|
|
||||||
ICacheFlushMode icache_flush_mode) {
|
|
||||||
DCHECK(IsCodeTarget(rmode_) || IsEmbeddedObjectMode(rmode_));
|
|
||||||
if (IsCompressedEmbeddedObject(rmode_)) {
|
|
||||||
diff --git a/deps/v8/src/codegen/riscv/assembler-riscv.h b/deps/v8/src/codegen/riscv/assembler-riscv.h
|
|
||||||
index bcd5a62d32..ed222b52d6 100644
|
|
||||||
--- a/deps/v8/src/codegen/riscv/assembler-riscv.h
|
|
||||||
+++ b/deps/v8/src/codegen/riscv/assembler-riscv.h
|
|
||||||
@@ -286,7 +286,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase,
|
|
||||||
// This is for calls and branches within generated code. The serializer
|
|
||||||
// has already deserialized the lui/ori instructions etc.
|
|
||||||
inline static void deserialization_set_special_target_at(Address location,
|
|
||||||
- Tagged<Code> code,
|
|
||||||
+ Code code,
|
|
||||||
Address target);
|
|
||||||
|
|
||||||
// Get the size of the special target encoded at 'instruction_payload'.
|
|
||||||
diff --git a/deps/v8/src/execution/riscv/simulator-riscv.cc b/deps/v8/src/execution/riscv/simulator-riscv.cc
|
|
||||||
index 052a2d67dd..9582db4896 100644
|
|
||||||
--- a/deps/v8/src/execution/riscv/simulator-riscv.cc
|
|
||||||
+++ b/deps/v8/src/execution/riscv/simulator-riscv.cc
|
|
||||||
@@ -1781,7 +1781,7 @@ void RiscvDebugger::Debug() {
|
|
||||||
sreg_t value;
|
|
||||||
StdoutStream os;
|
|
||||||
if (GetValue(arg1, &value)) {
|
|
||||||
- Tagged<Object> obj(value);
|
|
||||||
+ Object obj(value);
|
|
||||||
os << arg1 << ": \n";
|
|
||||||
#ifdef DEBUG
|
|
||||||
obj.Print(os);
|
|
||||||
@@ -1830,7 +1830,7 @@ void RiscvDebugger::Debug() {
|
|
||||||
PrintF(" 0x%012" PRIxPTR " : 0x%016" REGIx_FORMAT
|
|
||||||
" %14" REGId_FORMAT " ",
|
|
||||||
reinterpret_cast<intptr_t>(cur), *cur, *cur);
|
|
||||||
- Tagged<Object> obj(*cur);
|
|
||||||
+ Object obj(*cur);
|
|
||||||
Heap* current_heap = sim_->isolate_->heap();
|
|
||||||
if (obj.IsSmi() ||
|
|
||||||
IsValidHeapObject(current_heap, HeapObject::cast(obj))) {
|
|
||||||
@@ -4692,7 +4692,7 @@ bool Simulator::DecodeRvvVS() {
|
|
||||||
Builtin Simulator::LookUp(Address pc) {
|
|
||||||
for (Builtin builtin = Builtins::kFirst; builtin <= Builtins::kLast;
|
|
||||||
++builtin) {
|
|
||||||
- if (builtins_.code(builtin)->contains(isolate_, pc)) return builtin;
|
|
||||||
+ if (builtins_.code(builtin).contains(isolate_, pc)) return builtin;
|
|
||||||
}
|
|
||||||
return Builtin::kNoBuiltinId;
|
|
||||||
}
|
|
||||||
@@ -4709,7 +4709,7 @@ void Simulator::DecodeRVIType() {
|
|
||||||
if (builtin != Builtin::kNoBuiltinId) {
|
|
||||||
auto code = builtins_.code(builtin);
|
|
||||||
if ((rs1_reg() != ra || imm12() != 0)) {
|
|
||||||
- if ((Address)get_pc() == code->instruction_start()) {
|
|
||||||
+ if ((Address)get_pc() == code.InstructionStart()) {
|
|
||||||
sreg_t arg0 = get_register(a0);
|
|
||||||
sreg_t arg1 = get_register(a1);
|
|
||||||
sreg_t arg2 = get_register(a2);
|
|
||||||
diff --git a/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc b/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc
|
|
||||||
index 72f89767eb..4063b4b3d2 100644
|
|
||||||
--- a/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc
|
|
||||||
+++ b/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc
|
|
||||||
@@ -1211,7 +1211,7 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
|
|
||||||
int64_t RegExpMacroAssemblerRISCV::CheckStackGuardState(Address* return_address,
|
|
||||||
Address raw_code,
|
|
||||||
Address re_frame) {
|
|
||||||
- Tagged<InstructionStream> re_code = InstructionStream::cast(Object(raw_code));
|
|
||||||
+ InstructionStream re_code = InstructionStream::cast(Object(raw_code));
|
|
||||||
return NativeRegExpMacroAssembler::CheckStackGuardState(
|
|
||||||
frame_entry<Isolate*>(re_frame, kIsolateOffset),
|
|
||||||
static_cast<int>(frame_entry<int64_t>(re_frame, kStartIndexOffset)),
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
From e0d8242693da7d6c1eb5f2ae75cb224e8bc7397b Mon Sep 17 00:00:00 2001
|
|
||||||
From: zhenweijin <zhenwei.jin@intel.com>
|
|
||||||
Date: Fri, 1 Dec 2023 19:35:05 +0800
|
|
||||||
Subject: [PATCH] stream: fix fd is null when calling clearBuffer
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/internal/streams/writable.js | 3 ++-
|
|
||||||
test/parallel/test-file-write-stream5.js | 28 ++++++++++++++++++++++++
|
|
||||||
2 files changed, 30 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 test/parallel/test-file-write-stream5.js
|
|
||||||
|
|
||||||
diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js
|
|
||||||
index e55ddc1796cf6c..0dbf56d7a69ca9 100644
|
|
||||||
--- a/lib/internal/streams/writable.js
|
|
||||||
+++ b/lib/internal/streams/writable.js
|
|
||||||
@@ -733,7 +733,8 @@ function errorBuffer(state) {
|
|
||||||
|
|
||||||
// If there's something in the buffer waiting, then process it.
|
|
||||||
function clearBuffer(stream, state) {
|
|
||||||
- if ((state[kState] & (kDestroyed | kBufferProcessing | kCorked | kBuffered)) !== kBuffered) {
|
|
||||||
+ if ((state[kState] & (kDestroyed | kBufferProcessing | kCorked | kBuffered | kConstructed)) !==
|
|
||||||
+ (kBuffered | kConstructed)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/test/parallel/test-file-write-stream5.js b/test/parallel/test-file-write-stream5.js
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000000..cdc8b52eebd48d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/test/parallel/test-file-write-stream5.js
|
|
||||||
@@ -0,0 +1,28 @@
|
|
||||||
+'use strict';
|
|
||||||
+
|
|
||||||
+// Test 'uncork' for WritableStream.
|
|
||||||
+// Refs: https://github.com/nodejs/node/issues/50979
|
|
||||||
+
|
|
||||||
+const common = require('../common');
|
|
||||||
+const fs = require('fs');
|
|
||||||
+const assert = require('assert');
|
|
||||||
+const test = require('node:test');
|
|
||||||
+const tmpdir = require('../common/tmpdir');
|
|
||||||
+
|
|
||||||
+const filepath = tmpdir.resolve('write_stream.txt');
|
|
||||||
+tmpdir.refresh();
|
|
||||||
+
|
|
||||||
+const data = 'data';
|
|
||||||
+
|
|
||||||
+test('writable stream uncork', () => {
|
|
||||||
+ const fileWriteStream = fs.createWriteStream(filepath);
|
|
||||||
+
|
|
||||||
+ fileWriteStream.on('finish', common.mustCall(() => {
|
|
||||||
+ const writtenData = fs.readFileSync(filepath, 'utf8');
|
|
||||||
+ assert.strictEqual(writtenData, data);
|
|
||||||
+ }));
|
|
||||||
+ fileWriteStream.cork();
|
|
||||||
+ fileWriteStream.write(data, common.mustCall());
|
|
||||||
+ fileWriteStream.uncork();
|
|
||||||
+ fileWriteStream.end();
|
|
||||||
+});
|
|
||||||
Binary file not shown.
Binary file not shown.
35
nodejs.spec
35
nodejs.spec
@ -1,8 +1,8 @@
|
|||||||
%global baserelease 3
|
%global baserelease 1
|
||||||
%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
|
%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
|
||||||
%global nodejs_epoch 1
|
%global nodejs_epoch 1
|
||||||
%global nodejs_major 20
|
%global nodejs_major 20
|
||||||
%global nodejs_minor 11
|
%global nodejs_minor 12
|
||||||
%global nodejs_patch 1
|
%global nodejs_patch 1
|
||||||
%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
|
%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
|
||||||
%global nodejs_soversion 115
|
%global nodejs_soversion 115
|
||||||
@ -18,22 +18,22 @@
|
|||||||
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
|
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
|
||||||
%global v8_release %{nodejs_epoch}.%{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}.%{nodejs_release}
|
%global v8_release %{nodejs_epoch}.%{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}.%{nodejs_release}
|
||||||
%global c_ares_major 1
|
%global c_ares_major 1
|
||||||
%global c_ares_minor 20
|
%global c_ares_minor 27
|
||||||
%global c_ares_patch 1
|
%global c_ares_patch 0
|
||||||
%global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch}
|
%global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch}
|
||||||
%global llhttp_major 8
|
%global llhttp_major 8
|
||||||
%global llhttp_minor 1
|
%global llhttp_minor 1
|
||||||
%global llhttp_patch 1
|
%global llhttp_patch 2
|
||||||
%global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
|
%global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
|
||||||
%global libuv_major 1
|
%global libuv_major 1
|
||||||
%global libuv_minor 46
|
%global libuv_minor 46
|
||||||
%global libuv_patch 0
|
%global libuv_patch 0
|
||||||
%global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch}
|
%global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch}
|
||||||
%global nghttp2_major 1
|
%global nghttp2_major 1
|
||||||
%global nghttp2_minor 58
|
%global nghttp2_minor 60
|
||||||
%global nghttp2_patch 0
|
%global nghttp2_patch 0
|
||||||
%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
|
%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
|
||||||
%global icu_major 73
|
%global icu_major 74
|
||||||
%global icu_minor 2
|
%global icu_minor 2
|
||||||
%global icu_version %{icu_major}.%{icu_minor}
|
%global icu_version %{icu_major}.%{icu_minor}
|
||||||
%global icudatadir %{nodejs_datadir}/icudata
|
%global icudatadir %{nodejs_datadir}/icudata
|
||||||
@ -48,12 +48,12 @@
|
|||||||
%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch}
|
%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch}
|
||||||
%global npm_epoch 1
|
%global npm_epoch 1
|
||||||
%global npm_major 10
|
%global npm_major 10
|
||||||
%global npm_minor 2
|
%global npm_minor 5
|
||||||
%global npm_patch 4
|
%global npm_patch 0
|
||||||
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
|
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
|
||||||
%global uvwasi_major 0
|
%global uvwasi_major 0
|
||||||
%global uvwasi_minor 0
|
%global uvwasi_minor 0
|
||||||
%global uvwasi_patch 19
|
%global uvwasi_patch 20
|
||||||
%global uvwasi_version %{uvwasi_major}.%{uvwasi_minor}.%{uvwasi_patch}
|
%global uvwasi_version %{uvwasi_major}.%{uvwasi_minor}.%{uvwasi_patch}
|
||||||
%global histogram_major 0
|
%global histogram_major 0
|
||||||
%global histogram_minor 9
|
%global histogram_minor 9
|
||||||
@ -80,8 +80,6 @@ Source3: https://github.com/unicode-org/icu/releases/download/release-%{icu_majo
|
|||||||
Source4: nodejs_native.attr
|
Source4: nodejs_native.attr
|
||||||
|
|
||||||
Patch0: 0001-Use-system-uv-zlib.patch
|
Patch0: 0001-Use-system-uv-zlib.patch
|
||||||
Patch1: 0002-Revert-deps-V8-tagged.patch
|
|
||||||
Patch2: 0003-fix-fd-is-null-when-calling-clearBuffer.patch
|
|
||||||
|
|
||||||
BuildRequires: python3-devel python3-setuptools make
|
BuildRequires: python3-devel python3-setuptools make
|
||||||
BuildRequires: zlib-devel python3-jinja2
|
BuildRequires: zlib-devel python3-jinja2
|
||||||
@ -265,7 +263,12 @@ export LDFLAGS="%{build_ldflags}"
|
|||||||
# The ninja build does not put the shared library in the expected location, so
|
# The ninja build does not put the shared library in the expected location, so
|
||||||
# we will move it.
|
# we will move it.
|
||||||
mv out/Release/lib/libnode.so.%{nodejs_soversion} out/Release/
|
mv out/Release/lib/libnode.so.%{nodejs_soversion} out/Release/
|
||||||
|
|
||||||
|
%if 0%{?nodejs_major} >= 20
|
||||||
|
./tools/install.py install --dest-dir %{buildroot} --prefix %{_prefix}
|
||||||
|
%else
|
||||||
./tools/install.py install %{buildroot} %{_prefix}
|
./tools/install.py install %{buildroot} %{_prefix}
|
||||||
|
%endif
|
||||||
|
|
||||||
chmod 0755 %{buildroot}/%{_bindir}/node
|
chmod 0755 %{buildroot}/%{_bindir}/node
|
||||||
chrpath --delete %{buildroot}%{_bindir}/node
|
chrpath --delete %{buildroot}%{_bindir}/node
|
||||||
@ -399,6 +402,14 @@ NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/nod
|
|||||||
%{_pkgdocdir}/npm/docs
|
%{_pkgdocdir}/npm/docs
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Sep 18 2024 yaoxin <yao_xin001@hoperun.com> - 1:20.12.1-1
|
||||||
|
- Update to 20.12.1:
|
||||||
|
* CVE-2024-27983 - Assertion failed in node::http2::Http2Session::~Http2Session()
|
||||||
|
leads to HTTP/2 server crash- (High)
|
||||||
|
* CVE-2024-27982 - HTTP Request Smuggling via Content Length Obfuscation - (Medium)
|
||||||
|
* llhttp version 9.2.1
|
||||||
|
* undici version 5.28.4
|
||||||
|
|
||||||
* Mon May 06 2024 Ge Wang <wang__ge@126.com> - 1:20.11.1-3
|
* Mon May 06 2024 Ge Wang <wang__ge@126.com> - 1:20.11.1-3
|
||||||
- Fix fd is null when calling clearBuffer
|
- Fix fd is null when calling clearBuffer
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user