Skip to content

Commit f08b23b

Browse files
committed
Postfix for #8429: Segfault when already destroyed callback interface is used; fixed performance regression
1 parent 28ae656 commit f08b23b

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/remote/server/server.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ class CryptKeyCallback : public VersionedIface<ICryptKeyCallbackImpl<CryptKeyCal
195195
{
196196
public:
197197
explicit CryptKeyCallback(rem_port* prt)
198-
: port(prt), networkCallback(prt), keyHolder(NULL), keyCallback(NULL)
198+
: port(prt), networkCallback(prt)
199199
{ }
200200

201201
~CryptKeyCallback()
@@ -225,7 +225,7 @@ class CryptKeyCallback : public VersionedIface<ICryptKeyCallbackImpl<CryptKeyCal
225225

226226
void loadClientKey()
227227
{
228-
if (keyCallback)
228+
if (clientKeyChecked)
229229
return;
230230

231231
Reference r(*port);
@@ -257,6 +257,8 @@ class CryptKeyCallback : public VersionedIface<ICryptKeyCallbackImpl<CryptKeyCal
257257
check(&st);
258258
}
259259
}
260+
261+
clientKeyChecked = true;
260262
}
261263

262264
void wakeup(unsigned int length, const void* data)
@@ -309,8 +311,9 @@ class CryptKeyCallback : public VersionedIface<ICryptKeyCallbackImpl<CryptKeyCal
309311
private:
310312
rem_port* port;
311313
NetworkCallback networkCallback;
312-
IKeyHolderPlugin* keyHolder;
313-
ICryptKeyCallback* keyCallback;
314+
IKeyHolderPlugin* keyHolder = nullptr;
315+
ICryptKeyCallback* keyCallback = nullptr;
316+
bool clientKeyChecked = false;
314317
};
315318

316319
class ServerCallback : public ServerCallbackBase, public GlobalStorage

0 commit comments

Comments
 (0)