From a315e3a87818bfab975e0c72180024529778506b Mon Sep 17 00:00:00 2001 From: Amitosh Swain Mahapatra Date: Wed, 19 Dec 2018 23:15:10 +0530 Subject: [PATCH] Fix gcc,nan & v8 deprecations --- src/bcrypt.cc | 5 +++-- src/bcrypt_node.cc | 29 ++++++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/bcrypt.cc b/src/bcrypt.cc index be5c0975..4b9b99ce 100644 --- a/src/bcrypt.cc +++ b/src/bcrypt.cc @@ -118,7 +118,8 @@ encode_salt(char *salt, u_int8_t *csalt, char minor, u_int16_t clen, u_int8_t lo salt[2] = minor; salt[3] = '$'; - snprintf(salt + 4, 4, "%2.2u$", logr); + // Max rounds are 31 + snprintf(salt + 4, 4, "%2.2u$", logr & 0x001F); encode_base64((u_int8_t *) salt + 7, csalt, clen); } @@ -261,7 +262,7 @@ bcrypt(const char *key, const char *salt, char *encrypted) encrypted[i++] = minor; encrypted[i++] = '$'; - snprintf(encrypted + i, 4, "%2.2u$", logr); + snprintf(encrypted + i, 4, "%2.2u$", logr & 0x001F); encode_base64((u_int8_t *) encrypted + i + 3, csalt, BCRYPT_MAXSALT); encode_base64((u_int8_t *) encrypted + strlen(encrypted), ciphertext, diff --git a/src/bcrypt_node.cc b/src/bcrypt_node.cc index 385270bd..f1e73244 100644 --- a/src/bcrypt_node.cc +++ b/src/bcrypt_node.cc @@ -63,8 +63,11 @@ bool ValidateSalt(const char* salt) { } char ToCharVersion(Local str) { - String::Utf8Value value(str); - return **value; + //String::Utf8Value value(str); + + std::string our_str = *Nan::Utf8String(str); + + return our_str[0]; } /* SALT GENERATION */ @@ -118,7 +121,7 @@ NAN_METHOD(GenerateSalt) { return; } - const char minor_ver = ToCharVersion(info[0]->ToString()); + const char minor_ver = ToCharVersion(Nan::To(info[0]).ToLocalChecked()); const int32_t rounds = Nan::To(info[1]).FromMaybe(0); Local seed = info[2].As(); Local callback = Local::Cast(info[3]); @@ -147,7 +150,7 @@ NAN_METHOD(GenerateSaltSync) { return; } - const char minor_ver = ToCharVersion(info[0]->ToString()); + const char minor_ver = ToCharVersion(Nan::To(info[0]).ToLocalChecked()); const int32_t rounds = Nan::To(info[1]).FromMaybe(0); u_int8_t* seed = (u_int8_t*)Buffer::Data(info[2].As()); @@ -209,8 +212,8 @@ NAN_METHOD(Encrypt) { return; } - Nan::Utf8String data(info[0]->ToString()); - Nan::Utf8String salt(info[1]->ToString()); + Nan::Utf8String data(Nan::To(info[0]).ToLocalChecked()); + Nan::Utf8String salt(Nan::To(info[1]).ToLocalChecked()); Local callback = Local::Cast(info[2]); EncryptAsyncWorker* encryptWorker = new EncryptAsyncWorker(new Nan::Callback(callback), @@ -228,8 +231,8 @@ NAN_METHOD(EncryptSync) { return; } - Nan::Utf8String data(info[0]->ToString()); - Nan::Utf8String salt(info[1]->ToString()); + Nan::Utf8String data(Nan::To(info[0]).ToLocalChecked()); + Nan::Utf8String salt(Nan::To(info[1]).ToLocalChecked()); if (!(ValidateSalt(*salt))) { Nan::ThrowError("Invalid salt. Salt must be in the form of: $Vers$log2(NumRounds)$saltvalue"); @@ -309,8 +312,8 @@ NAN_METHOD(Compare) { return; } - Nan::Utf8String input(info[0]->ToString()); - Nan::Utf8String encrypted(info[1]->ToString()); + Nan::Utf8String input(Nan::To(info[0]).ToLocalChecked()); + Nan::Utf8String encrypted(Nan::To(info[1]).ToLocalChecked()); Local callback = Local::Cast(info[2]); CompareAsyncWorker* compareWorker = new CompareAsyncWorker(new Nan::Callback(callback), @@ -328,8 +331,8 @@ NAN_METHOD(CompareSync) { return; } - Nan::Utf8String pw(info[0]->ToString()); - Nan::Utf8String hash(info[1]->ToString()); + Nan::Utf8String pw(Nan::To(info[0]).ToLocalChecked()); + Nan::Utf8String hash(Nan::To(info[1]).ToLocalChecked()); char bcrypted[_PASSWORD_LEN]; if (ValidateSalt(*hash)) { @@ -349,7 +352,7 @@ NAN_METHOD(GetRounds) { return; } - Nan::Utf8String hash(info[0]->ToString()); + Nan::Utf8String hash(Nan::To(info[0]).ToLocalChecked()); u_int32_t rounds; if (!(rounds = bcrypt_get_rounds(*hash))) { Nan::ThrowError("invalid hash provided");