Upgrade to Node.js 4.2.2 (LTS)
This commit is contained in:
parent
20320bc673
commit
f2c3b615ec
1
.gitignore
vendored
1
.gitignore
vendored
@ -32,3 +32,4 @@
|
|||||||
/node-v0.10.32-stripped.tar.gz
|
/node-v0.10.32-stripped.tar.gz
|
||||||
/node-v0.10.33-stripped.tar.gz
|
/node-v0.10.33-stripped.tar.gz
|
||||||
/node-v0.10.36-stripped.tar.gz
|
/node-v0.10.36-stripped.tar.gz
|
||||||
|
/node-v4.2.2-stripped.tar.gz
|
||||||
|
@ -1,26 +1,29 @@
|
|||||||
From 4464455834276c845a63fede515cb62655afb2da Mon Sep 17 00:00:00 2001
|
From 34a6454fc02ae79362cc03f501bb08fb95495a1b Mon Sep 17 00:00:00 2001
|
||||||
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
|
From: Stephen Gallagher <sgallagh@redhat.com>
|
||||||
Date: Tue, 12 Nov 2013 14:51:03 -0700
|
Date: Tue, 1 Dec 2015 16:35:29 -0500
|
||||||
Subject: [PATCH] disable running gyp files for bundled deps
|
Subject: [PATCH 1/2] disable running gyp files for bundled deps
|
||||||
|
|
||||||
these aren't used in Fedora
|
|
||||||
---
|
---
|
||||||
Makefile | 2 +-
|
Makefile | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
diff --git a/Makefile b/Makefile
|
||||||
index 8177017..81d150f 100644
|
index 02619fac98ddd7bd90648f6493ccf49fcf22c47b..981c3ce4daa8724547979d7646117182399b22db 100644
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -43,7 +43,7 @@ node_g: config.gypi out/Makefile
|
@@ -47,11 +47,11 @@ $(NODE_EXE): config.gypi out/Makefile
|
||||||
ln -fs out/Debug/node $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
-out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
$(NODE_G_EXE): config.gypi out/Makefile
|
||||||
+out/Makefile: common.gypi node.gyp config.gypi
|
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
|
||||||
ifeq ($(USE_NINJA),1)
|
ln -fs out/Debug/$(NODE_EXE) $@
|
||||||
touch out/Makefile
|
|
||||||
$(PYTHON) tools/gyp_node.py -f ninja
|
-out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/toolchain.gypi deps/v8/build/features.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
||||||
|
+out/Makefile: common.gypi deps/v8/build/toolchain.gypi deps/v8/build/features.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
||||||
|
$(PYTHON) tools/gyp_node.py -f make
|
||||||
|
|
||||||
|
config.gypi: configure
|
||||||
|
if [ -f $@ ]; then
|
||||||
|
$(error Stale $@, please re-run ./configure)
|
||||||
--
|
--
|
||||||
1.8.4.2
|
2.5.0
|
||||||
|
|
||||||
|
@ -1,689 +0,0 @@
|
|||||||
From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
|
|
||||||
Date: Wed, 18 Jun 2014 23:19:19 -0700
|
|
||||||
Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
|
|
||||||
|
|
||||||
This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
|
|
||||||
---
|
|
||||||
src/cares_wrap.cc | 8 ++---
|
|
||||||
src/fs_event_wrap.cc | 3 +-
|
|
||||||
src/node.cc | 42 +++++++++++++-------------
|
|
||||||
src/node_crypto.cc | 31 ++++++++++---------
|
|
||||||
src/node_dtrace.cc | 6 ++--
|
|
||||||
src/node_file.cc | 37 +++++++++++------------
|
|
||||||
src/node_stat_watcher.cc | 3 +-
|
|
||||||
src/process_wrap.cc | 9 +++---
|
|
||||||
src/udp_wrap.cc | 9 +++---
|
|
||||||
src/util.h | 78 ------------------------------------------------
|
|
||||||
10 files changed, 68 insertions(+), 158 deletions(-)
|
|
||||||
delete mode 100644 src/util.h
|
|
||||||
|
|
||||||
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
|
|
||||||
index 321e144..b7ba828 100644
|
|
||||||
--- a/src/cares_wrap.cc
|
|
||||||
+++ b/src/cares_wrap.cc
|
|
||||||
@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
|
|
||||||
// object reference, causing wrap->GetObject() to return undefined.
|
|
||||||
Local<Object> object = Local<Object>::New(wrap->GetObject());
|
|
||||||
|
|
||||||
- node::Utf8Value name(args[0]);
|
|
||||||
+ String::Utf8Value name(args[0]);
|
|
||||||
|
|
||||||
int r = wrap->Send(*name);
|
|
||||||
if (r) {
|
|
||||||
@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
|
|
||||||
// object reference, causing wrap->GetObject() to return undefined.
|
|
||||||
Local<Object> object = Local<Object>::New(wrap->GetObject());
|
|
||||||
|
|
||||||
- node::Utf8Value name(args[0]);
|
|
||||||
+ String::Utf8Value name(args[0]);
|
|
||||||
int family = args[1]->Int32Value();
|
|
||||||
|
|
||||||
int r = wrap->Send(*name, family);
|
|
||||||
@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
|
|
||||||
static Handle<Value> GetAddrInfo(const Arguments& args) {
|
|
||||||
HandleScope scope;
|
|
||||||
|
|
||||||
- node::Utf8Value hostname(args[0]);
|
|
||||||
+ String::Utf8Value hostname(args[0]);
|
|
||||||
|
|
||||||
int fam = AF_UNSPEC;
|
|
||||||
if (args[1]->IsInt32()) {
|
|
||||||
diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
|
|
||||||
index fc54283..7e3eb8c 100644
|
|
||||||
--- a/src/fs_event_wrap.cc
|
|
||||||
+++ b/src/fs_event_wrap.cc
|
|
||||||
@@ -21,7 +21,6 @@
|
|
||||||
|
|
||||||
#include "node.h"
|
|
||||||
#include "handle_wrap.h"
|
|
||||||
-#include "util.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
|
|
||||||
return ThrowException(Exception::TypeError(String::New("Bad arguments")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
|
|
||||||
if (r == 0) {
|
|
||||||
diff --git a/src/node.cc b/src/node.cc
|
|
||||||
index e9696cd..8257604 100644
|
|
||||||
--- a/src/node.cc
|
|
||||||
+++ b/src/node.cc
|
|
||||||
@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
|
|
||||||
|
|
||||||
if (!encoding_v->IsString()) return _default;
|
|
||||||
|
|
||||||
- node::Utf8Value encoding(encoding_v);
|
|
||||||
+ String::Utf8Value encoding(encoding_v);
|
|
||||||
|
|
||||||
if (strcasecmp(*encoding, "utf8") == 0) {
|
|
||||||
return UTF8;
|
|
||||||
@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
|
|
||||||
|
|
||||||
if (!message.IsEmpty()) {
|
|
||||||
// Print (filename):(line number): (message).
|
|
||||||
- node::Utf8Value filename(message->GetScriptResourceName());
|
|
||||||
+ String::Utf8Value filename(message->GetScriptResourceName());
|
|
||||||
const char* filename_string = *filename;
|
|
||||||
int linenum = message->GetLineNumber();
|
|
||||||
fprintf(stderr, "%s:%i\n", filename_string, linenum);
|
|
||||||
// Print line of source code.
|
|
||||||
- node::Utf8Value sourceline(message->GetSourceLine());
|
|
||||||
+ String::Utf8Value sourceline(message->GetSourceLine());
|
|
||||||
const char* sourceline_string = *sourceline;
|
|
||||||
|
|
||||||
// Because of how node modules work, all scripts are wrapped with a
|
|
||||||
@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
|
|
||||||
|
|
||||||
if (show_line) DisplayExceptionLine(try_catch);
|
|
||||||
|
|
||||||
- node::Utf8Value trace(try_catch.StackTrace());
|
|
||||||
+ String::Utf8Value trace(try_catch.StackTrace());
|
|
||||||
|
|
||||||
// range errors have a trace member set to undefined
|
|
||||||
if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
|
|
||||||
@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
|
|
||||||
!(er->ToObject()->Get(String::New("name"))->IsUndefined());
|
|
||||||
|
|
||||||
if (isErrorObject) {
|
|
||||||
- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
|
|
||||||
+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
|
|
||||||
fprintf(stderr, "%s: ", *name);
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value msg(!isErrorObject ? er
|
|
||||||
+ String::Utf8Value msg(!isErrorObject ? er
|
|
||||||
: er->ToObject()->Get(String::New("message")));
|
|
||||||
fprintf(stderr, "%s\n", *msg);
|
|
||||||
}
|
|
||||||
@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
|
|
||||||
return ThrowException(Exception::Error(String::New("Bad argument.")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
uv_err_t r = uv_chdir(*path);
|
|
||||||
|
|
||||||
@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
|
|
||||||
oct = args[0]->Uint32Value();
|
|
||||||
} else {
|
|
||||||
oct = 0;
|
|
||||||
- node::Utf8Value str(args[0]);
|
|
||||||
+ String::Utf8Value str(args[0]);
|
|
||||||
|
|
||||||
// Parse the octal string.
|
|
||||||
for (int i = 0; i < str.length(); i++) {
|
|
||||||
@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
|
|
||||||
if (value->IsUint32()) {
|
|
||||||
return static_cast<uid_t>(value->Uint32Value());
|
|
||||||
} else {
|
|
||||||
- node::Utf8Value name(value);
|
|
||||||
+ String::Utf8Value name(value);
|
|
||||||
return uid_by_name(*name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
|
|
||||||
if (value->IsUint32()) {
|
|
||||||
return static_cast<gid_t>(value->Uint32Value());
|
|
||||||
} else {
|
|
||||||
- node::Utf8Value name(value);
|
|
||||||
+ String::Utf8Value name(value);
|
|
||||||
return gid_by_name(*name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
|
|
||||||
return ThrowTypeError("argument 2 must be a number or a string");
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value arg0(args[0]);
|
|
||||||
+ String::Utf8Value arg0(args[0]);
|
|
||||||
gid_t extra_group;
|
|
||||||
bool must_free;
|
|
||||||
char* user;
|
|
||||||
@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
|
|
||||||
}
|
|
||||||
|
|
||||||
Local<Object> module = args[0]->ToObject(); // Cast
|
|
||||||
- node::Utf8Value filename(args[1]); // Cast
|
|
||||||
+ String::Utf8Value filename(args[1]); // Cast
|
|
||||||
|
|
||||||
if (exports_symbol.IsEmpty()) {
|
|
||||||
exports_symbol = NODE_PSYMBOL("exports");
|
|
||||||
@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
|
|
||||||
return ThrowException(Exception::Error(errmsg));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[1]);
|
|
||||||
+ String::Utf8Value path(args[1]);
|
|
||||||
base = *path;
|
|
||||||
|
|
||||||
/* Find the shared library filename within the full path. */
|
|
||||||
@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
|
|
||||||
HandleScope scope;
|
|
||||||
|
|
||||||
Local<String> module = args[0]->ToString();
|
|
||||||
- node::Utf8Value module_v(module);
|
|
||||||
+ String::Utf8Value module_v(module);
|
|
||||||
node_module_struct* modp;
|
|
||||||
|
|
||||||
if (binding_cache.IsEmpty()) {
|
|
||||||
@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
|
|
||||||
Local<Value> value,
|
|
||||||
const AccessorInfo& info) {
|
|
||||||
HandleScope scope;
|
|
||||||
- node::Utf8Value title(value);
|
|
||||||
+ String::Utf8Value title(value);
|
|
||||||
// TODO: protect with a lock
|
|
||||||
uv_set_process_title(*title);
|
|
||||||
}
|
|
||||||
@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
|
|
||||||
const AccessorInfo& info) {
|
|
||||||
HandleScope scope;
|
|
||||||
#ifdef __POSIX__
|
|
||||||
- node::Utf8Value key(property);
|
|
||||||
+ String::Utf8Value key(property);
|
|
||||||
const char* val = getenv(*key);
|
|
||||||
if (val) {
|
|
||||||
return scope.Close(String::New(val));
|
|
||||||
@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
|
|
||||||
const AccessorInfo& info) {
|
|
||||||
HandleScope scope;
|
|
||||||
#ifdef __POSIX__
|
|
||||||
- node::Utf8Value key(property);
|
|
||||||
- node::Utf8Value val(value);
|
|
||||||
+ String::Utf8Value key(property);
|
|
||||||
+ String::Utf8Value val(value);
|
|
||||||
setenv(*key, *val, 1);
|
|
||||||
#else // _WIN32
|
|
||||||
String::Value key(property);
|
|
||||||
@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
|
|
||||||
const AccessorInfo& info) {
|
|
||||||
HandleScope scope;
|
|
||||||
#ifdef __POSIX__
|
|
||||||
- node::Utf8Value key(property);
|
|
||||||
+ String::Utf8Value key(property);
|
|
||||||
if (getenv(*key)) {
|
|
||||||
return scope.Close(Integer::New(0));
|
|
||||||
}
|
|
||||||
@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
|
|
||||||
const AccessorInfo& info) {
|
|
||||||
HandleScope scope;
|
|
||||||
#ifdef __POSIX__
|
|
||||||
- node::Utf8Value key(property);
|
|
||||||
+ String::Utf8Value key(property);
|
|
||||||
if (!getenv(*key)) return False();
|
|
||||||
unsetenv(*key); // can't check return value, it's void on some platforms
|
|
||||||
return True();
|
|
||||||
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
|
|
||||||
index 46faba2..0ae1f8a 100644
|
|
||||||
--- a/src/node_crypto.cc
|
|
||||||
+++ b/src/node_crypto.cc
|
|
||||||
@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
|
|
||||||
OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
|
|
||||||
|
|
||||||
if (args.Length() == 1 && args[0]->IsString()) {
|
|
||||||
- node::Utf8Value sslmethod(args[0]);
|
|
||||||
+ String::Utf8Value sslmethod(args[0]);
|
|
||||||
|
|
||||||
if (strcmp(*sslmethod, "SSLv2_method") == 0) {
|
|
||||||
#ifndef OPENSSL_NO_SSL2
|
|
||||||
@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
|
|
||||||
int r = -1;
|
|
||||||
|
|
||||||
if (v->IsString()) {
|
|
||||||
- node::Utf8Value s(v);
|
|
||||||
+ String::Utf8Value s(v);
|
|
||||||
r = BIO_write(bio, *s, s.length());
|
|
||||||
} else if (Buffer::HasInstance(v)) {
|
|
||||||
char* buffer_data = Buffer::Data(v);
|
|
||||||
@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
|
|
||||||
BIO *bio = LoadBIO(args[0]);
|
|
||||||
if (!bio) return False();
|
|
||||||
|
|
||||||
- node::Utf8Value passphrase(args[1]);
|
|
||||||
+ String::Utf8Value passphrase(args[1]);
|
|
||||||
|
|
||||||
EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
|
|
||||||
len == 1 ? NULL : *passphrase);
|
|
||||||
@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
|
|
||||||
return ThrowException(Exception::TypeError(String::New("Bad parameter")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value ciphers(args[0]);
|
|
||||||
+ String::Utf8Value ciphers(args[0]);
|
|
||||||
SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
|
|
||||||
|
|
||||||
return True();
|
|
||||||
@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
|
|
||||||
return ThrowException(Exception::TypeError(String::New("Bad parameter")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value sessionIdContext(args[0]);
|
|
||||||
+ String::Utf8Value sessionIdContext(args[0]);
|
|
||||||
const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
|
|
||||||
unsigned int sid_ctx_len = sessionIdContext.length();
|
|
||||||
|
|
||||||
@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
|
|
||||||
if (is_server) {
|
|
||||||
SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
|
|
||||||
} else {
|
|
||||||
- node::Utf8Value servername(args[2]);
|
|
||||||
+ String::Utf8Value servername(args[2]);
|
|
||||||
SSL_set_tlsext_host_name(p->ssl_, *servername);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
|
|
||||||
ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
|
|
||||||
assert(key_written == key_buf_len);
|
|
||||||
|
|
||||||
- node::Utf8Value cipherType(args[0]);
|
|
||||||
+ String::Utf8Value cipherType(args[0]);
|
|
||||||
|
|
||||||
bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
|
|
||||||
|
|
||||||
@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
|
|
||||||
ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
|
|
||||||
assert(iv_written == iv_len);
|
|
||||||
|
|
||||||
- node::Utf8Value cipherType(args[0]);
|
|
||||||
+ String::Utf8Value cipherType(args[0]);
|
|
||||||
|
|
||||||
bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
|
|
||||||
|
|
||||||
@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
|
|
||||||
ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
|
|
||||||
assert(key_written == key_len);
|
|
||||||
|
|
||||||
- node::Utf8Value cipherType(args[0]);
|
|
||||||
+ String::Utf8Value cipherType(args[0]);
|
|
||||||
|
|
||||||
bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
|
|
||||||
|
|
||||||
@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
|
|
||||||
ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
|
|
||||||
assert(iv_written == iv_len);
|
|
||||||
|
|
||||||
- node::Utf8Value cipherType(args[0]);
|
|
||||||
+ String::Utf8Value cipherType(args[0]);
|
|
||||||
|
|
||||||
bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
|
|
||||||
|
|
||||||
@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
|
|
||||||
return ThrowException(exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value hashType(args[0]);
|
|
||||||
+ String::Utf8Value hashType(args[0]);
|
|
||||||
|
|
||||||
bool r;
|
|
||||||
|
|
||||||
@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
|
|
||||||
"Must give hashtype string as argument")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value hashType(args[0]);
|
|
||||||
+ String::Utf8Value hashType(args[0]);
|
|
||||||
|
|
||||||
Hash *hash = new Hash();
|
|
||||||
if (!hash->HashInit(*hashType)) {
|
|
||||||
@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
|
|
||||||
"Must give signtype string as argument")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value signType(args[0]);
|
|
||||||
+ String::Utf8Value signType(args[0]);
|
|
||||||
|
|
||||||
bool r = sign->SignInit(*signType);
|
|
||||||
|
|
||||||
@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
|
|
||||||
"Must give verifytype string as argument")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value verifyType(args[0]);
|
|
||||||
+ String::Utf8Value verifyType(args[0]);
|
|
||||||
|
|
||||||
bool r = verify->VerifyInit(*verifyType);
|
|
||||||
|
|
||||||
@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
|
|
||||||
String::New("No group name given")));
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value group_name(args[0]);
|
|
||||||
+ String::Utf8Value group_name(args[0]);
|
|
||||||
|
|
||||||
modp_group* it = modp_groups;
|
|
||||||
|
|
||||||
diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
|
|
||||||
index 0b2d0f4..4b851e3 100644
|
|
||||||
--- a/src/node_dtrace.cc
|
|
||||||
+++ b/src/node_dtrace.cc
|
|
||||||
@@ -68,7 +66,7 @@ using namespace v8;
|
|
||||||
return (ThrowException(Exception::Error(String::New("expected " \
|
|
||||||
"object for " #obj " to contain string member " #member)))); \
|
|
||||||
} \
|
|
||||||
- node::Utf8Value _##member(obj->Get(String::New(#member))); \
|
|
||||||
+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
|
|
||||||
if ((*(const char **)valp = *_##member) == NULL) \
|
|
||||||
*(const char **)valp = "<unknown>";
|
|
||||||
|
|
||||||
@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
|
|
||||||
"object for request to contain string member headers"))));
|
|
||||||
|
|
||||||
Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
|
|
||||||
- node::Utf8Value fwdfor(strfwdfor);
|
|
||||||
+ String::Utf8Value fwdfor(strfwdfor);
|
|
||||||
|
|
||||||
if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
|
|
||||||
req.forwardedFor = const_cast<char*>("");
|
|
||||||
diff --git a/src/node_file.cc b/src/node_file.cc
|
|
||||||
index 3c35e0b..f665b19 100644
|
|
||||||
--- a/src/node_file.cc
|
|
||||||
+++ b/src/node_file.cc
|
|
||||||
@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(stat, args[1], *path)
|
|
||||||
@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(lstat, args[1], *path)
|
|
||||||
@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
|
|
||||||
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value dest(args[0]);
|
|
||||||
- node::Utf8Value path(args[1]);
|
|
||||||
+ String::Utf8Value dest(args[0]);
|
|
||||||
+ String::Utf8Value path(args[1]);
|
|
||||||
int flags = 0;
|
|
||||||
|
|
||||||
if (args[2]->IsString()) {
|
|
||||||
- node::Utf8Value mode(args[2]);
|
|
||||||
+ String::Utf8Value mode(args[2]);
|
|
||||||
if (strcmp(*mode, "dir") == 0) {
|
|
||||||
flags |= UV_FS_SYMLINK_DIR;
|
|
||||||
} else if (strcmp(*mode, "junction") == 0) {
|
|
||||||
@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
|
|
||||||
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value orig_path(args[0]);
|
|
||||||
- node::Utf8Value new_path(args[1]);
|
|
||||||
+ String::Utf8Value orig_path(args[0]);
|
|
||||||
+ String::Utf8Value new_path(args[1]);
|
|
||||||
|
|
||||||
if (args[2]->IsFunction()) {
|
|
||||||
ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
|
|
||||||
@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(readlink, args[1], *path)
|
|
||||||
@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
|
|
||||||
if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value old_path(args[0]);
|
|
||||||
- node::Utf8Value new_path(args[1]);
|
|
||||||
+ String::Utf8Value old_path(args[0]);
|
|
||||||
+ String::Utf8Value new_path(args[1]);
|
|
||||||
|
|
||||||
if (args[2]->IsFunction()) {
|
|
||||||
ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
|
|
||||||
@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(unlink, args[1], *path)
|
|
||||||
@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(rmdir, args[1], *path)
|
|
||||||
@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
|
|
||||||
return THROW_BAD_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
int mode = static_cast<int>(args[1]->Int32Value());
|
|
||||||
|
|
||||||
if (args[2]->IsFunction()) {
|
|
||||||
@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
|
|
||||||
if (args.Length() < 1) return TYPE_ERROR("path required");
|
|
||||||
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
|
|
||||||
if (args[1]->IsFunction()) {
|
|
||||||
ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
|
|
||||||
@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
|
|
||||||
if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
|
|
||||||
if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
int flags = args[1]->Int32Value();
|
|
||||||
int mode = static_cast<int>(args[2]->Int32Value());
|
|
||||||
|
|
||||||
@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
|
|
||||||
if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
|
|
||||||
return THROW_BAD_ARGS;
|
|
||||||
}
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
int mode = static_cast<int>(args[1]->Int32Value());
|
|
||||||
|
|
||||||
if(args[2]->IsFunction()) {
|
|
||||||
@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
|
|
||||||
if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
|
|
||||||
if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
|
|
||||||
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
|
|
||||||
uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
|
|
||||||
|
|
||||||
@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
|
|
||||||
if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
|
|
||||||
if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
|
|
||||||
|
|
||||||
- const node::Utf8Value path(args[0]);
|
|
||||||
+ const String::Utf8Value path(args[0]);
|
|
||||||
const double atime = static_cast<double>(args[1]->NumberValue());
|
|
||||||
const double mtime = static_cast<double>(args[2]->NumberValue());
|
|
||||||
|
|
||||||
diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
|
|
||||||
index fd3e5d1..c3f668c 100644
|
|
||||||
--- a/src/node_stat_watcher.cc
|
|
||||||
+++ b/src/node_stat_watcher.cc
|
|
||||||
@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
|
|
||||||
HandleScope scope;
|
|
||||||
|
|
||||||
StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
|
|
||||||
- node::Utf8Value path(args[0]);
|
|
||||||
+ String::Utf8Value path(args[0]);
|
|
||||||
const bool persistent = args[1]->BooleanValue();
|
|
||||||
const uint32_t interval = args[2]->Uint32Value();
|
|
||||||
|
|
||||||
diff --git a/src/process_wrap.cc b/src/process_wrap.cc
|
|
||||||
index ac63e4b..784300f 100644
|
|
||||||
--- a/src/process_wrap.cc
|
|
||||||
+++ b/src/process_wrap.cc
|
|
||||||
@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
|
|
||||||
|
|
||||||
// options.file
|
|
||||||
Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
|
|
||||||
- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
|
|
||||||
+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
|
|
||||||
if (file.length() > 0) {
|
|
||||||
options.file = *file;
|
|
||||||
} else {
|
|
||||||
@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
|
|
||||||
// Heap allocate to detect errors. +1 is for NULL.
|
|
||||||
options.args = new char*[argc + 1];
|
|
||||||
for (int i = 0; i < argc; i++) {
|
|
||||||
- node::Utf8Value arg(js_argv->Get(i));
|
|
||||||
+ String::Utf8Value arg(js_argv->Get(i));
|
|
||||||
options.args[i] = strdup(*arg);
|
|
||||||
}
|
|
||||||
options.args[argc] = NULL;
|
|
||||||
@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
|
|
||||||
|
|
||||||
// options.cwd
|
|
||||||
Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
|
|
||||||
- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
|
|
||||||
+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
|
|
||||||
if (cwd.length() > 0) {
|
|
||||||
options.cwd = *cwd;
|
|
||||||
}
|
|
||||||
@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
|
|
||||||
int envc = env->Length();
|
|
||||||
options.env = new char*[envc + 1]; // Heap allocated to detect errors.
|
|
||||||
for (int i = 0; i < envc; i++) {
|
|
||||||
- node::Utf8Value pair(env->Get(i));
|
|
||||||
+ String::Utf8Value pair(env->Get(i));
|
|
||||||
options.env[i] = strdup(*pair);
|
|
||||||
}
|
|
||||||
options.env[envc] = NULL;
|
|
||||||
diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
|
|
||||||
index 31a4e78..b33f4e8 100644
|
|
||||||
--- a/src/udp_wrap.cc
|
|
||||||
+++ b/src/udp_wrap.cc
|
|
||||||
@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
|
|
||||||
// bind(ip, port, flags)
|
|
||||||
assert(args.Length() == 3);
|
|
||||||
|
|
||||||
- node::Utf8Value address(args[0]);
|
|
||||||
+ String::Utf8Value address(args[0]);
|
|
||||||
const int port = args[1]->Uint32Value();
|
|
||||||
const int flags = args[2]->Uint32Value();
|
|
||||||
|
|
||||||
@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
|
|
||||||
|
|
||||||
assert(args.Length() == 2);
|
|
||||||
|
|
||||||
- node::Utf8Value address(args[0]);
|
|
||||||
- node::Utf8Value iface(args[1]);
|
|
||||||
+ String::Utf8Value address(args[0]);
|
|
||||||
+ String::Utf8Value iface(args[1]);
|
|
||||||
|
|
||||||
const char* iface_cstr = *iface;
|
|
||||||
if (args[1]->IsUndefined() || args[1]->IsNull()) {
|
|
||||||
@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
|
|
||||||
length);
|
|
||||||
|
|
||||||
const unsigned short port = args[3]->Uint32Value();
|
|
||||||
- node::Utf8Value address(args[4]);
|
|
||||||
+ String::Utf8Value address(args[4]);
|
|
||||||
|
|
||||||
switch (family) {
|
|
||||||
case AF_INET:
|
|
||||||
diff --git a/src/util.h b/src/util.h
|
|
||||||
--- a/src/util.h
|
|
||||||
+++ b/src/util.h
|
|
||||||
@@ -41,52 +41,6 @@
|
|
||||||
obj->Set(domain_symbol, domain);
|
|
||||||
}
|
|
||||||
|
|
||||||
-class Utf8Value {
|
|
||||||
- public:
|
|
||||||
- explicit Utf8Value(v8::Handle<v8::Value> value)
|
|
||||||
- : length_(0), str_(NULL) {
|
|
||||||
- if (value.IsEmpty())
|
|
||||||
- return;
|
|
||||||
-
|
|
||||||
- v8::Local<v8::String> val_ = value->ToString();
|
|
||||||
-
|
|
||||||
- // Allocate enough space to include the null terminator
|
|
||||||
- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
|
|
||||||
-
|
|
||||||
- char* str = static_cast<char*>(calloc(1, len));
|
|
||||||
-
|
|
||||||
- int flags = WRITE_UTF8_FLAGS;
|
|
||||||
- flags |= ~v8::String::NO_NULL_TERMINATION;
|
|
||||||
-
|
|
||||||
- length_ = val_->WriteUtf8(str,
|
|
||||||
- len,
|
|
||||||
- 0,
|
|
||||||
- flags);
|
|
||||||
-
|
|
||||||
- str_ = reinterpret_cast<char*>(str);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- ~Utf8Value() {
|
|
||||||
- free(str_);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- char* operator*() {
|
|
||||||
- return str_;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- const char* operator*() const {
|
|
||||||
- return str_;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- size_t length() const {
|
|
||||||
- return length_;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- private:
|
|
||||||
- size_t length_;
|
|
||||||
- char* str_;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
} // namespace node
|
|
||||||
|
|
||||||
#endif // SRC_UTIL_H_
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
|||||||
From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
|
|
||||||
Date: Wed, 18 Jun 2014 23:09:03 -0700
|
|
||||||
Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
|
|
||||||
|
|
||||||
This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
|
|
||||||
---
|
|
||||||
src/node.cc | 7 -------
|
|
||||||
src/string_bytes.cc | 2 +-
|
|
||||||
src/string_bytes.h | 2 --
|
|
||||||
test/simple/test-buffer.js | 12 ------------
|
|
||||||
4 files changed, 1 insertion(+), 22 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/node.cc b/src/node.cc
|
|
||||||
index 4223973..e9696cd 100644
|
|
||||||
--- a/src/node.cc
|
|
||||||
+++ b/src/node.cc
|
|
||||||
@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
|
|
||||||
// Declared in node_internals.h
|
|
||||||
Isolate* node_isolate = NULL;
|
|
||||||
|
|
||||||
-int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
|
|
||||||
- v8::String::NO_NULL_TERMINATION;
|
|
||||||
-
|
|
||||||
static void Spin(uv_idle_t* handle, int status) {
|
|
||||||
assert((uv_idle_t*) handle == &tick_spinner);
|
|
||||||
assert(status == 0);
|
|
||||||
@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
|
|
||||||
|
|
||||||
|
|
||||||
int Start(int argc, char *argv[]) {
|
|
||||||
- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
|
|
||||||
-
|
|
||||||
- if (replaceInvalid == NULL)
|
|
||||||
- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
|
|
||||||
-
|
|
||||||
// Hack aroung with the argv pointer. Used for process.title = "blah".
|
|
||||||
argv = uv_setup_args(argc, argv);
|
|
||||||
|
|
||||||
diff --git a/src/string_bytes.cc b/src/string_bytes.cc
|
|
||||||
index a7bab38..e4a34fe 100644
|
|
||||||
--- a/src/string_bytes.cc
|
|
||||||
+++ b/src/string_bytes.cc
|
|
||||||
@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
|
|
||||||
break;
|
|
||||||
|
|
||||||
case UTF8:
|
|
||||||
- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
|
|
||||||
+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case UCS2:
|
|
||||||
diff --git a/src/string_bytes.h b/src/string_bytes.h
|
|
||||||
index 31f04bb..8071a49 100644
|
|
||||||
--- a/src/string_bytes.h
|
|
||||||
+++ b/src/string_bytes.h
|
|
||||||
@@ -29,8 +29,6 @@
|
|
||||||
|
|
||||||
namespace node {
|
|
||||||
|
|
||||||
-extern int WRITE_UTF8_FLAGS;
|
|
||||||
-
|
|
||||||
using v8::Handle;
|
|
||||||
using v8::Local;
|
|
||||||
using v8::String;
|
|
||||||
diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
|
|
||||||
index f8b2798..3026824 100644
|
|
||||||
--- a/test/simple/test-buffer.js
|
|
||||||
+++ b/test/simple/test-buffer.js
|
|
||||||
@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
|
|
||||||
assert.equal(buf[3], 0xFF);
|
|
||||||
});
|
|
||||||
|
|
||||||
-// test unmatched surrogates not producing invalid utf8 output
|
|
||||||
-// ef bf bd = utf-8 representation of unicode replacement character
|
|
||||||
-// see https://codereview.chromium.org/121173009/
|
|
||||||
-buf = new Buffer('ab\ud800cd', 'utf8');
|
|
||||||
-assert.equal(buf[0], 0x61);
|
|
||||||
-assert.equal(buf[1], 0x62);
|
|
||||||
-assert.equal(buf[2], 0xef);
|
|
||||||
-assert.equal(buf[3], 0xbf);
|
|
||||||
-assert.equal(buf[4], 0xbd);
|
|
||||||
-assert.equal(buf[5], 0x63);
|
|
||||||
-assert.equal(buf[6], 0x64);
|
|
||||||
-
|
|
||||||
// test for buffer overrun
|
|
||||||
buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
|
|
||||||
var sub = buf.slice(0, 4); // length: 4
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,45 +1,69 @@
|
|||||||
Description: do not bundle CA certificates, openssl on Debian have them
|
From 8bdb9e5d7dcde463d9664fc6a999c11a3048a673 Mon Sep 17 00:00:00 2001
|
||||||
As a consequence, nodejs must depend on ca-certificates.
|
From: Stephen Gallagher <sgallagh@redhat.com>
|
||||||
|
Date: Tue, 1 Dec 2015 16:29:07 -0500
|
||||||
|
Subject: [PATCH 2/2] Do not bundle CA Certificates
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
CA Certificates are provided by Fedora.
|
||||||
|
|
||||||
Forwarded: need some feedback before submitting the matter upstream
|
Forwarded: need some feedback before submitting the matter upstream
|
||||||
Author: Jérémy Lal <kapouer@melix.org>
|
Author: Jérémy Lal <kapouer@melix.org>
|
||||||
Last-Update: 2014-03-02
|
Last-Update: 2014-03-02
|
||||||
|
|
||||||
Modified 2014-05-02 by T.C. Hollingsworth <tchollingsworth@gmail.com> with the
|
Modified 2014-05-02 by T.C. Hollingsworth <tchollingsworth@gmail.com> with the
|
||||||
correct path for Fedora
|
correct path for Fedora
|
||||||
|
|
||||||
|
Modified 2015-12-01 by Stephen Gallagher <sgallagh@redhat.com> to update for
|
||||||
|
Node.js 4.2
|
||||||
|
---
|
||||||
|
src/node_crypto.cc | 31 ++++++++-----------------------
|
||||||
|
1 file changed, 8 insertions(+), 23 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
|
||||||
|
index bd7314c9db902c59035b60ee5e2ebb4dc99a9a9f..ddc6f081136dd327e35d6326ba9835df7f834e70 100644
|
||||||
--- a/src/node_crypto.cc
|
--- a/src/node_crypto.cc
|
||||||
+++ b/src/node_crypto.cc
|
+++ b/src/node_crypto.cc
|
||||||
@@ -64,7 +64,6 @@
|
@@ -125,11 +125,11 @@ struct ClearErrorOnReturn {
|
||||||
namespace node {
|
|
||||||
|
|
||||||
const char* root_certs[] = {
|
|
||||||
-#include "node_root_certs.h" // NOLINT(build/include_order)
|
|
||||||
NULL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -561,32 +560,16 @@
|
static uv_mutex_t* locks;
|
||||||
assert(sc->ca_store_ == NULL);
|
|
||||||
|
const char* const root_certs[] = {
|
||||||
|
-#include "node_root_certs.h" // NOLINT(build/include_order)
|
||||||
|
+ NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
X509_STORE* root_cert_store;
|
||||||
|
|
||||||
|
// Just to generate static methods
|
||||||
|
@@ -715,36 +715,21 @@ void SecureContext::AddRootCerts(const FunctionCallbackInfo<Value>& args) {
|
||||||
|
(void) &clear_error_on_return; // Silence compiler warning.
|
||||||
|
|
||||||
|
CHECK_EQ(sc->ca_store_, nullptr);
|
||||||
|
|
||||||
if (!root_cert_store) {
|
if (!root_cert_store) {
|
||||||
- root_cert_store = X509_STORE_new();
|
- root_cert_store = X509_STORE_new();
|
||||||
-
|
-
|
||||||
- for (int i = 0; root_certs[i]; i++) {
|
- for (size_t i = 0; i < ARRAY_SIZE(root_certs); i++) {
|
||||||
- BIO *bp = BIO_new(BIO_s_mem());
|
- BIO* bp = NodeBIO::New();
|
||||||
-
|
-
|
||||||
- if (!BIO_write(bp, root_certs[i], strlen(root_certs[i]))) {
|
- if (!BIO_write(bp, root_certs[i], strlen(root_certs[i]))) {
|
||||||
- BIO_free(bp);
|
- BIO_free_all(bp);
|
||||||
- return False();
|
- return;
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
- X509 *x509 = PEM_read_bio_X509(bp, NULL, NULL, NULL);
|
- X509 *x509 = PEM_read_bio_X509(bp, nullptr, CryptoPemCallback, nullptr);
|
||||||
-
|
-
|
||||||
- if (x509 == NULL) {
|
- if (x509 == nullptr) {
|
||||||
- BIO_free(bp);
|
- BIO_free_all(bp);
|
||||||
- return False();
|
- return;
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
- X509_STORE_add_cert(root_cert_store, x509);
|
- X509_STORE_add_cert(root_cert_store, x509);
|
||||||
-
|
-
|
||||||
- BIO_free(bp);
|
- BIO_free_all(bp);
|
||||||
- X509_free(x509);
|
- X509_free(x509);
|
||||||
+ if (SSL_CTX_load_verify_locations(sc->ctx_, "/etc/pki/tls/certs/ca-bundle.crt", NULL) == 1) {
|
+ if (SSL_CTX_load_verify_locations(sc->ctx_, "/etc/pki/tls/certs/ca-bundle.crt", NULL) == 1) {
|
||||||
+ root_cert_store = SSL_CTX_get_cert_store(sc->ctx_);
|
+ root_cert_store = SSL_CTX_get_cert_store(sc->ctx_);
|
||||||
@ -50,9 +74,14 @@ correct path for Fedora
|
|||||||
+ } else {
|
+ } else {
|
||||||
+ SSL_CTX_set_cert_store(sc->ctx_, root_cert_store);
|
+ SSL_CTX_set_cert_store(sc->ctx_, root_cert_store);
|
||||||
}
|
}
|
||||||
-
|
|
||||||
sc->ca_store_ = root_cert_store;
|
sc->ca_store_ = root_cert_store;
|
||||||
- SSL_CTX_set_cert_store(sc->ctx_, sc->ca_store_);
|
- SSL_CTX_set_cert_store(sc->ctx_, sc->ca_store_);
|
||||||
|
|
||||||
return True();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SecureContext::SetCiphers(const FunctionCallbackInfo<Value>& args) {
|
||||||
|
SecureContext* sc = Unwrap<SecureContext>(args.Holder());
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
||||||
|
79
nodejs.spec
79
nodejs.spec
@ -1,6 +1,6 @@
|
|||||||
Name: nodejs
|
Name: nodejs
|
||||||
Version: 0.10.36
|
Version: 4.2.2
|
||||||
Release: 5%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: JavaScript runtime
|
Summary: JavaScript runtime
|
||||||
License: MIT and ASL 2.0 and ISC and BSD
|
License: MIT and ASL 2.0 and ISC and BSD
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
@ -28,30 +28,16 @@ Patch1: nodejs-disable-gyp-deps.patch
|
|||||||
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/2014_donotinclude_root_certs.patch
|
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/2014_donotinclude_root_certs.patch
|
||||||
Patch2: nodejs-use-system-certs.patch
|
Patch2: nodejs-use-system-certs.patch
|
||||||
|
|
||||||
# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot
|
# V8 presently breaks ABI at least every x.y release while never bumping SONAME
|
||||||
# be done in a stable distribution release. This build of nodejs will behave as
|
%global v8_abi 4.6
|
||||||
# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
|
|
||||||
# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
|
|
||||||
Patch3: nodejs-revert-utf8-v8.patch
|
|
||||||
Patch4: nodejs-revert-utf8-node.patch
|
|
||||||
|
|
||||||
# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
|
BuildRequires: python-devel
|
||||||
# so we need to be more explicit until spot fixes that
|
BuildRequires: libuv-devel >= 1.7.5
|
||||||
%global v8_ge 1:3.14.5.10-17
|
BuildRequires: http-parser-devel >= 2.6
|
||||||
%global v8_lt 1:3.15
|
|
||||||
%global v8_abi 3.14
|
|
||||||
|
|
||||||
BuildRequires: v8-devel >= %{v8_ge}
|
|
||||||
BuildRequires: http-parser-devel >= 2.0
|
|
||||||
BuildRequires: compat-libuv010-devel
|
|
||||||
BuildRequires: c-ares-devel
|
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
# Node.js requires some features from openssl 1.0.1 for SPDY support
|
# Node.js requires some features from openssl 1.0.1 for SPDY support
|
||||||
BuildRequires: openssl-devel >= 1:1.0.1
|
BuildRequires: openssl-devel >= 1:1.0.1
|
||||||
|
|
||||||
Requires: v8%{?_isa} >= %{v8_ge}
|
|
||||||
Requires: v8%{?_isa} < %{v8_lt}
|
|
||||||
|
|
||||||
# we need the system certificate store when Patch2 is applied
|
# we need the system certificate store when Patch2 is applied
|
||||||
Requires: ca-certificates
|
Requires: ca-certificates
|
||||||
|
|
||||||
@ -67,7 +53,7 @@ Provides: nodejs(engine) = %{version}
|
|||||||
# Node.js currently has a conflict with the 'node' package in Fedora
|
# Node.js currently has a conflict with the 'node' package in Fedora
|
||||||
# The ham-radio group has agreed to rename their binary for us, but
|
# The ham-radio group has agreed to rename their binary for us, but
|
||||||
# in the meantime, we're setting an explicit Conflicts: here
|
# in the meantime, we're setting an explicit Conflicts: here
|
||||||
Conflicts: node <= 0.3.2-11
|
Conflicts: node <= 0.3.2-12
|
||||||
|
|
||||||
# The punycode module was absorbed into the standard library in v0.6.
|
# The punycode module was absorbed into the standard library in v0.6.
|
||||||
# It still exists as a seperate package for the benefit of users of older
|
# It still exists as a seperate package for the benefit of users of older
|
||||||
@ -79,6 +65,18 @@ Provides: nodejs-punycode = 1.3.1
|
|||||||
Provides: npm(punycode) = 1.3.1
|
Provides: npm(punycode) = 1.3.1
|
||||||
|
|
||||||
|
|
||||||
|
# Node.js has forked c-ares from upstream in an incompatible way, so we need
|
||||||
|
# to carry the bundled version internally.
|
||||||
|
# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85
|
||||||
|
Provides: bundled(c-ares) = 1.10.1
|
||||||
|
|
||||||
|
# Node.js is closely tied to the version of v8 that is used with it. It makes
|
||||||
|
# sense to use the bundled version because upstream consistently breaks ABI
|
||||||
|
# even in point releases. Node.js upstream has now removed the ability to build
|
||||||
|
# against a shared system version entirely.
|
||||||
|
# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858cfbbef
|
||||||
|
Provides: bundled(v8) = 4.6.85
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Node.js is a platform built on Chrome's JavaScript runtime
|
Node.js is a platform built on Chrome's JavaScript runtime
|
||||||
for easily building fast, scalable network applications.
|
for easily building fast, scalable network applications.
|
||||||
@ -90,8 +88,8 @@ real-time applications that run across distributed devices.
|
|||||||
Summary: JavaScript runtime - development headers
|
Summary: JavaScript runtime - development headers
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Requires: %{name}%{?_isa} == %{version}-%{release}
|
Requires: %{name}%{?_isa} == %{version}-%{release}
|
||||||
Requires: compat-libuv010-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa}
|
Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa}
|
||||||
Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa}
|
Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
|
||||||
Requires: nodejs-packaging
|
Requires: nodejs-packaging
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
@ -109,17 +107,17 @@ The API documentation for the Node.js JavaScript runtime.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n node-v%{version}
|
%setup -q -n node-v%{version}
|
||||||
|
|
||||||
# remove bundled dependencies
|
# remove bundled dependencies that we aren't building
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
rm -rf deps
|
rm -rf deps/http_parser \
|
||||||
|
deps/npm \
|
||||||
|
deps/uv \
|
||||||
|
deps/zlib
|
||||||
|
|
||||||
# remove bundled CA certificates
|
# remove bundled CA certificates
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
rm -f src/node_root_certs.h
|
rm -f src/node_root_certs.h
|
||||||
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# build with debugging symbols and add defines from libuv (#892601)
|
# build with debugging symbols and add defines from libuv (#892601)
|
||||||
@ -127,10 +125,8 @@ export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
|
|||||||
export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
|
export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
|
||||||
|
|
||||||
./configure --prefix=%{_prefix} \
|
./configure --prefix=%{_prefix} \
|
||||||
--shared-v8 \
|
|
||||||
--shared-openssl \
|
--shared-openssl \
|
||||||
--shared-zlib \
|
--shared-zlib \
|
||||||
--shared-cares \
|
|
||||||
--shared-libuv \
|
--shared-libuv \
|
||||||
--shared-libuv-libname=:libuv.so.0.10 \
|
--shared-libuv-libname=:libuv.so.0.10 \
|
||||||
--shared-libuv-includes=%{_includedir}/compat-libuv010 \
|
--shared-libuv-includes=%{_includedir}/compat-libuv010 \
|
||||||
@ -144,7 +140,7 @@ make BUILDTYPE=Debug %{?_smp_mflags}
|
|||||||
%install
|
%install
|
||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
./tools/install.py install %{buildroot}
|
./tools/install.py install %{buildroot} %{_prefix}
|
||||||
|
|
||||||
# and remove dtrace file again
|
# and remove dtrace file again
|
||||||
rm -rf %{buildroot}/%{_prefix}/lib/dtrace
|
rm -rf %{buildroot}/%{_prefix}/lib/dtrace
|
||||||
@ -172,36 +168,43 @@ chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
|
|||||||
mkdir -p %{buildroot}%{_pkgdocdir}/html
|
mkdir -p %{buildroot}%{_pkgdocdir}/html
|
||||||
cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
|
cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
|
||||||
rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
|
rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
|
||||||
cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
|
|
||||||
cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
|
|
||||||
|
|
||||||
#node-gyp needs common.gypi too
|
#node-gyp needs common.gypi too
|
||||||
mkdir -p %{buildroot}%{_datadir}/node
|
mkdir -p %{buildroot}%{_datadir}/node
|
||||||
cp -p common.gypi %{buildroot}%{_datadir}/node
|
cp -p common.gypi %{buildroot}%{_datadir}/node
|
||||||
|
|
||||||
|
# Install the GDB init tool into the documentation directory
|
||||||
|
mv %{buildroot}/%{_datadir}/doc/node/gdbinit %{buildroot}/%{_pkgdocdir}/gdbinit
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%{_bindir}/node
|
%{_bindir}/node
|
||||||
%{_mandir}/man1/node.*
|
%{_mandir}/man1/node.*
|
||||||
%dir %{_prefix}/lib/node_modules
|
%dir %{_prefix}/lib/node_modules
|
||||||
%dir %{_datadir}/node
|
%dir %{_datadir}/node
|
||||||
|
%dir %{_datadir}/systemtap
|
||||||
|
%dir %{_datadir}/systemtap/tapset
|
||||||
|
%{_datadir}/systemtap/tapset/node.stp
|
||||||
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
|
%{_rpmconfigdir}/fileattrs/nodejs_native.attr
|
||||||
%{_rpmconfigdir}/nodejs_native.req
|
%{_rpmconfigdir}/nodejs_native.req
|
||||||
%dir %{_pkgdocdir}
|
%dir %{_pkgdocdir}
|
||||||
%{_pkgdocdir}/ChangeLog
|
%license LICENSE
|
||||||
%{_pkgdocdir}/LICENSE
|
%doc AUTHORS CHANGELOG.md COLLABORATOR_GUIDE.md GOVERNANCE.md README.md
|
||||||
%{_pkgdocdir}/README.md
|
%doc ROADMAP.md WORKING_GROUPS.md
|
||||||
%{_pkgdocdir}/AUTHORS
|
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_bindir}/node_g
|
%{_bindir}/node_g
|
||||||
%{_includedir}/node
|
%{_includedir}/node
|
||||||
%{_datadir}/node/common.gypi
|
%{_datadir}/node/common.gypi
|
||||||
|
%{_pkgdocdir}/gdbinit
|
||||||
|
|
||||||
%files docs
|
%files docs
|
||||||
%dir %{_pkgdocdir}
|
%dir %{_pkgdocdir}
|
||||||
%{_pkgdocdir}/html
|
%{_pkgdocdir}/html
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 01 2015 Stephen Gallagher <sgallagh@redhat.com> 4.2.2-0.1
|
||||||
|
- Upgrade to Node.js 4.2.2 (LTS)
|
||||||
|
|
||||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.36-5
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.36-5
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user