From 21d1057f68cac5e270c75580a459bbb82f69efbf Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 8 Feb 2021 12:23:23 -0500 Subject: [PATCH] TT#108003 fix possible deadlock Change-Id: I604bd76248aa0bc33589ee379a99b6f82c840662 --- daemon/t38.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/daemon/t38.c b/daemon/t38.c index 95ecf1115..15d0f3f61 100644 --- a/daemon/t38.c +++ b/daemon/t38.c @@ -580,7 +580,7 @@ int t38_gateway_input_udptl(struct t38_gateway *tg, const str *buf) { // get seq num uint16_t seq; if (str_shift_ret(&s, 2, &piece)) - goto err; + goto err_nolock; seq = ntohs(*((uint16_t *) piece.s)); err = "Invalid primary UDPTL packet"; @@ -593,7 +593,7 @@ int t38_gateway_input_udptl(struct t38_gateway *tg, const str *buf) { err = "Error correction mode byte missing"; if (str_shift_ret(&s, 1, &piece)) - goto err; + goto err_nolock; char fec = piece.s[0]; mutex_lock(&tg->lock); @@ -756,6 +756,8 @@ out: return 0; err: + mutex_unlock(&tg->lock); +err_nolock: if (err) ilog(LOG_ERR | LOG_FLAG_LIMIT, "Failed to process UDPTL/T.38/IFP packet: %s", err); if (up)