From aaf7c6850ce7b800a1a99ea2c0f437d2f7bd2dd8 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Thu, 21 Dec 2023 10:51:40 +0100 Subject: [PATCH] MT#58636 Fix a defect detected by Coverity Scan ** CID 1574844: Null pointer dereferences (FORWARD_NULL) /daemon/call.c: 2416 in codecs_offer() *** CID 1574844: Null pointer dereferences (FORWARD_NULL) /daemon/call.c: 2416 in codecs_offer() 2410 2411 if (update_answerer) { 2412 // update/create answer/receiver side 2413 ilogs(codec, LOG_DEBUG, "Updating offer codecs for answerer " STR_FORMAT " #%u", 2414 STR_FMT(&media->monologue->tag), 2415 media->index); >>> CID 1574844: Null pointer dereferences (FORWARD_NULL) >>> Dereferencing null pointer "flags". 2416 if (flags->static_codecs && media->codecs.codec_prefs.length) 2417 ilogs(codec, LOG_DEBUG, "Leaving answerer codecs alone"); 2418 else if (flags && flags->reuse_codec) 2419 codec_store_populate_reuse(&media->codecs, &sp->codecs, 2420 .merge_cs = &sp->codecs); 2421 else ** CID 1574843: Null pointer dereferences (REVERSE_INULL) /daemon/call.c: 2418 in codecs_offer() *** CID 1574843: Null pointer dereferences (REVERSE_INULL) /daemon/call.c: 2418 in codecs_offer() 2412 // update/create answer/receiver side 2413 ilogs(codec, LOG_DEBUG, "Updating offer codecs for answerer " STR_FORMAT " #%u", 2414 STR_FMT(&media->monologue->tag), 2415 media->index); 2416 if (flags->static_codecs && media->codecs.codec_prefs.length) 2417 ilogs(codec, LOG_DEBUG, "Leaving answerer codecs alone"); >>> CID 1574843: Null pointer dereferences (REVERSE_INULL) >>> Null-checking "flags" suggests that it may be null, but it has already been dereferenced on all paths leading to the check. 2418 else if (flags && flags->reuse_codec) 2419 codec_store_populate_reuse(&media->codecs, &sp->codecs, 2420 .merge_cs = &sp->codecs); 2421 else 2422 codec_store_populate(&media->codecs, &sp->codecs, 2423 .allow_asymmetric = !!(flags && flags->allow_asymmetric_codecs), Change-Id: Ife9ad5fdf9481fb74bbc4e7c5ac5a784bb564d4b (cherry picked from commit acd303cd568ed71b5c713e9c14516fc2b9141aee) --- daemon/call.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/call.c b/daemon/call.c index c232b618b..76fc1f273 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2412,7 +2412,7 @@ static void codecs_offer(struct call_media *media, struct call_media *other_medi ilogs(codec, LOG_DEBUG, "Updating codecs for answerer " STR_FORMAT " #%u", STR_FMT(&media->monologue->tag), media->index); - if (flags->static_codecs && media->codecs.codec_prefs.length) + if ((flags && flags->static_codecs) && media->codecs.codec_prefs.length) ilogs(codec, LOG_DEBUG, "Leaving answerer codecs alone"); else if (flags && flags->reuse_codec) codec_store_populate_reuse(&media->codecs, &sp->codecs);