Transceiver: fix segfault during init if IP addr binding fails
If osmo-trx is started and IP addr binding fails (ie because the IP
address is not assigned in the system), it will try to access a
heap-allocated Thread instance which was not initialized (because init()
function returned earlier).
Fixes: OS#4147
Change-Id: I19f9745cd026c0ff6581895a66bf91b40113b07d
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 2d5c04e..e946aac 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -151,9 +151,11 @@
close(mClockSocket);
for (size_t i = 0; i < mChans; i++) {
- mControlServiceLoopThreads[i]->cancel();
- mControlServiceLoopThreads[i]->join();
- delete mControlServiceLoopThreads[i];
+ if (mControlServiceLoopThreads[i]) {
+ mControlServiceLoopThreads[i]->cancel();
+ mControlServiceLoopThreads[i]->join();
+ delete mControlServiceLoopThreads[i];
+ }
mTxPriorityQueues[i].clear();
if (mCtrlSockets[i] >= 0)