From 94238173113443a45b3ab67c4644200f297ff407 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Wed, 28 Jun 2023 13:28:57 +0200 Subject: [PATCH] mgcp_client: check rc of map_str_to_codec Abort with error log when map_str_to_codec is -1, instead of writing it as unsigned integer into ptmap[i].codec. Related: OS#6074 Change-Id: I08b91c849d810fe3cdb72c0f6f2a558b7377deab --- src/libosmo-mgcp-client/mgcp_client.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libosmo-mgcp-client/mgcp_client.c b/src/libosmo-mgcp-client/mgcp_client.c index d901c4d2b..75c7b14f5 100644 --- a/src/libosmo-mgcp-client/mgcp_client.c +++ b/src/libosmo-mgcp-client/mgcp_client.c @@ -371,7 +371,7 @@ static int mgcp_parse_audio_ptime_rtpmap(struct mgcp_response *r, const char *li { unsigned int pt; char codec_resp[64]; - enum mgcp_codecs codec; + int rc; #define A_PTIME "a=ptime:" #define A_RTPMAP "a=rtpmap:" @@ -392,9 +392,14 @@ static int mgcp_parse_audio_ptime_rtpmap(struct mgcp_response *r, const char *li LOGP(DLMGCP, LOGL_ERROR, "No more space in ptmap array (len=%u)\n", r->ptmap_len); return -ENOSPC; } - codec = map_str_to_codec(codec_resp); + rc = map_str_to_codec(codec_resp); + if (rc < 0) { + LOGP(DLMGCP, LOGL_ERROR, + "Failed to parse SDP parameter, can't parse codec in rtpmap: %s\n", osmo_quote_str(line, -1)); + return -EINVAL; + } r->ptmap[r->ptmap_len].pt = pt; - r->ptmap[r->ptmap_len].codec = codec; + r->ptmap[r->ptmap_len].codec = rc; r->ptmap_len++; }