summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2017-04-28 10:55:05 +0200
committerHarald Welte <laforge@gnumonks.org>2017-05-08 07:35:37 +0000
commit85a6af213e8ccc0eb177b994db4137cf5b3089a4 (patch)
treea0986ae15674cf4ab0ab6dc320cc65611f41c931
parenta8a5819155323be6fab2c874d4448c0c9510331e (diff)
gsm0808: fix control flow issue
Coverity Scan reported a control flow issue in line 206: CID 166898: Control flow issues (DEADCODE) The second branch of the if statement can not be reached. The purpose of the second if branch was to filter out zero length elements if the header states that it is a non extended speech codec type. This makes no sense, since the header needs at least one byte. This patch removes the second if branch, zero length elements are catched by the already existing zero length check at the beginning of the function Change-Id: I89751fc0d598734c64ef1fdced75b7c4fa77c616
-rw-r--r--src/gsm/gsm0808_utils.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c
index 054372aa..b4bb8789 100644
--- a/src/gsm/gsm0808_utils.c
+++ b/src/gsm/gsm0808_utils.c
@@ -200,11 +200,10 @@ int gsm0808_dec_speech_codec(struct gsm0808_speech_codec *sc,
header = *elem;
- /* Malformed elements */
+ /* An extended codec type needs at least two fields,
+ * bail if the input data length is not sufficient. */
if ((header & 0x0F) == 0x0F && len < 2)
return -EINVAL;
- else if ((header & 0x0F) != 0x0F && len < 1)
- return -EINVAL;
elem++;
len--;