From b373413669cbd93802cba7453369a9e2068779fb Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Tue, 1 Sep 2015 14:47:23 +0200 Subject: [PATCH] src: fix double free crashes - After upgrading to nan2 the buffers returned in some of the functions were being released because of Nan:NewBuffer. See: https://github.com/nodejs/nan/blob/master/doc/buffers.md#api_nan_new_buffer --- src/cardreader.cpp | 4 ++-- src/pcsclite.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cardreader.cpp b/src/cardreader.cpp index 2a6d98d..22b192c 100644 --- a/src/cardreader.cpp +++ b/src/cardreader.cpp @@ -344,7 +344,7 @@ void CardReader::HandleReaderStatusChange(uv_async_t *handle, int status) { Local argv[argc] = { Nan::Undefined(), // argument Nan::New(ar->status), - Nan::NewBuffer(reinterpret_cast(ar->atr), ar->atrlen).ToLocalChecked() + Nan::CopyBuffer(reinterpret_cast(ar->atr), ar->atrlen).ToLocalChecked() }; Nan::Callback(Nan::New(async_baton->callback)).Call(argc, argv); @@ -573,7 +573,7 @@ void CardReader::AfterTransmit(uv_work_t* req, int status) { const unsigned argc = 2; Local argv[argc] = { Nan::Null(), - Nan::NewBuffer(reinterpret_cast(tr->data), tr->len).ToLocalChecked() + Nan::CopyBuffer(reinterpret_cast(tr->data), tr->len).ToLocalChecked() }; Nan::Callback(Nan::New(baton->callback)).Call(argc, argv); diff --git a/src/pcsclite.cpp b/src/pcsclite.cpp index e77bd85..3e93bb5 100644 --- a/src/pcsclite.cpp +++ b/src/pcsclite.cpp @@ -133,7 +133,7 @@ void PCSCLite::HandleReaderStatusChange(uv_async_t *handle, int status) { const unsigned argc = 2; Local argv[argc] = { Nan::Undefined(), // argument - Nan::NewBuffer(ar->readers_name, ar->readers_name_length).ToLocalChecked() + Nan::CopyBuffer(ar->readers_name, ar->readers_name_length).ToLocalChecked() }; Nan::Callback(Nan::New(async_baton->callback)).Call(argc, argv);