diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2017-04-28 10:55:05 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-05-08 07:35:37 +0000 |
commit | 85a6af213e8ccc0eb177b994db4137cf5b3089a4 (patch) | |
tree | a0986ae15674cf4ab0ab6dc320cc65611f41c931 /src/gsm | |
parent | a8a5819155323be6fab2c874d4448c0c9510331e (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
Diffstat (limited to 'src/gsm')
-rw-r--r-- | src/gsm/gsm0808_utils.c | 5 |
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--; |