Browse Source

MT#59038 Fix a defect detected by Coverity Scan (dtmf)

Fix for:

*** CID 1583598:  Program hangs  (LOCK)
/daemon/dtmf.c: 937 in dtmf_trigger_do_pause_resume_rec()
931             codec_timer_callback(ml->call, dtmf_trigger_do_pause_rec, ml, 0);
932     }
933
934     static void dtmf_trigger_do_pause_resume_rec(call_t *c, codec_timer_callback_arg_t a) {
935             rwlock_lock_w(&c->master_lock);
936             if (!c->recording)
>>>     CID 1583598:  Program hangs  (LOCK)
>>>     Returning without unlocking "c->master_lock".
937                     return;
938             if (CALL_SET(c, RECORDING_ON))
939                     recording_pause(c);
940             else
941                     recording_start(c);
942             rwlock_unlock_w(&c->master_lock);

Change-Id: I7bab7de7e67fdcb7136b3b7dbb61584b0d05f829
pull/1802/head
Donat Zenichev 2 years ago
parent
commit
e2d4da995b
1 changed files with 3 additions and 1 deletions
  1. +3
    -1
      daemon/dtmf.c

+ 3
- 1
daemon/dtmf.c View File

@ -933,8 +933,10 @@ static void dtmf_trigger_pause_rec(struct call_media *media, struct call_monolog
static void dtmf_trigger_do_pause_resume_rec(call_t *c, codec_timer_callback_arg_t a) {
rwlock_lock_w(&c->master_lock);
if (!c->recording)
if (!c->recording) {
rwlock_unlock_w(&c->master_lock);
return;
}
if (CALL_SET(c, RECORDING_ON))
recording_pause(c);
else


Loading…
Cancel
Save