diff --git a/src/session.cpp b/src/session.cpp index 02c52b7d3bf269dfa8e7a4885f08efa1f6e9f802..f4c6dda92694077afa9ad0717a87055adf0d7c1f 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -103,10 +103,9 @@ const authdb::SessionData * authdb::Session::addSession(AuthBackend &backend,uui if(cur.type == UserData && strcmp(cur.fieldname,"username")==0 && uuid_compare(cur.uuid,userid)==0){ - char *tmp=new char[cur.datasize]; - backend.read((unsigned char*)tmp,cur.datasize); - username=tmp; - delete[] tmp; + std::shared_ptr tmp(new unsigned char[cur.datasize]); + backend.read(tmp.get(),cur.datasize); + username=reinterpret_cast(tmp.get()); } } @@ -214,10 +213,9 @@ void authdb::Session::relSession(AuthBackend &backend,uuid_t sessionid){ if(cur.type == UserData && strcmp(cur.fieldname,"username")==0 && uuid_compare(cur.uuid,cursess->_uid)==0){ - char *tmp=new char[cur.datasize]; - backend.read(reinterpret_cast(tmp),cur.datasize); - username=tmp; - delete[] tmp; + std::shared_ptrtmp(new unsigned char[cur.datasize]); + backend.read(tmp.get(),cur.datasize); + username=reinterpret_cast(tmp.get()); } if(cur.type == GroupData && strcmp(cur.fieldname,"groupname")==0){