From a2da17c8608d25f64239047d0ff497adb015e411 Mon Sep 17 00:00:00 2001 From: Szczepan Zalega Date: Mon, 8 Aug 2016 17:51:34 +0200 Subject: Moving to shared ptr for device Signed-off-by: Szczepan Zalega --- NitrokeyManager.cc | 18 +++++++----------- include/NitrokeyManager.h | 3 ++- include/device_proto.h | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index 93b11fa..c6eb51b 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -24,7 +24,7 @@ namespace nitrokey{ // package type to auth, auth type [Authorize,UserAuthorize] template - void auth_package(T& package, const char* admin_temporary_password, Device * device){ + void auth_package(T& package, const char* admin_temporary_password, shared_ptr device){ auto auth = get_payload(); strcpyT(auth.temporary_password, admin_temporary_password); auth.crc_to_authorize = S::CommandTransaction::getCRC(package); @@ -33,22 +33,18 @@ namespace nitrokey{ NitrokeyManager * NitrokeyManager::_instance = nullptr; - NitrokeyManager::NitrokeyManager(): device(nullptr) { + NitrokeyManager::NitrokeyManager() { set_debug(true); } NitrokeyManager::~NitrokeyManager() { - delete device; } bool NitrokeyManager::connect() { device = nullptr; - vector devices = { new Stick10(), new Stick20() }; + vector< shared_ptr > devices = { make_shared(), make_shared() }; for( auto d : devices ){ - if (device != nullptr){ - delete d; - } - if (device == nullptr && d->connect()){ - device = d; + if (d->connect()){ + device = std::shared_ptr(d); } } return device != nullptr; @@ -58,10 +54,10 @@ namespace nitrokey{ bool NitrokeyManager::connect(const char *device_model) { switch (device_model[0]){ case 'P': - device = new Stick10(); + device = make_shared(); break; case 'S': - device = new Stick20(); + device = make_shared(); break; default: throw std::runtime_error("Unknown model"); diff --git a/include/NitrokeyManager.h b/include/NitrokeyManager.h index be367fd..6fa096a 100644 --- a/include/NitrokeyManager.h +++ b/include/NitrokeyManager.h @@ -7,6 +7,7 @@ #include "stick10_commands.h" #include "stick20_commands.h" #include +#include namespace nitrokey { using namespace nitrokey::device; @@ -86,7 +87,7 @@ namespace nitrokey { static NitrokeyManager *_instance; bool connected; - Device *device; + std::shared_ptr device; bool is_valid_hotp_slot_number(uint8_t slot_number) const; bool is_valid_totp_slot_number(uint8_t slot_number) const; diff --git a/include/device_proto.h b/include/device_proto.h index 40b2a22..4044cdc 100644 --- a/include/device_proto.h +++ b/include/device_proto.h @@ -144,7 +144,7 @@ public: bzero(&packet, sizeof(packet)); } - response_payload & data(){ + response_payload & data() { return packet.payload; } -- cgit v1.2.1