summaryrefslogtreecommitdiff
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2015-04-09 12:57:21 +0000
committerMatthew Jordan <mjordan@digium.com>2015-04-09 12:57:21 +0000
commitea0098724efbd64a06b3103d19bb5f711f6f3cd7 (patch)
tree80ffc2e721dd3fde80fa9ef914a5f523fdfb3df1 /channels/chan_skinny.c
parent2201e2734077c07648029f165d1a6a89f99e07c0 (diff)
clang compiler warnings: Fix autological comparisons
This fixes autological comparison warnings in the following: * chan_skinny: letohl may return a signed or unsigned value, depending on the macro chosen * func_curl: Provide a specific cast to CURLoption to prevent mismatch * cel: Fix enum comparisons where the enum can never be negative * enum: Fix comparison of return result of dn_expand, which returns a signed int value * event: Fix enum comparisons where the enum can never be negative * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be negative * presencestate: Use the actual enum value for INVALID state * security_events: Fix enum comparisons where the enum can never be negative * udptl: Don't bother to check if the return value from encode_length is less than 0, as it returns an unsigned int * translate: Since the parameters are unsigned int, don't bother checking to see if they are negative. The cast to unsigned int would already blow past the matrix bounds. * res_pjsip_exten_state: Use a temporary value to cache the return of ast_hint_presence_state * res_stasis_playback: Fix enum comparisons where the enum can never be negative * res_stasis_recording: Add an enum value for the case where the recording operation is in error; fix enum comparisons * resource_bridges: Use enum value as opposed to -1 * resource_channels: Use enum value as opposed to -1 Review: https://reviewboard.asterisk.org/r/4533 ASTERISK-24917 Reported by: dkdegroot patches: rb4533.patch submitted by dkdegroot (License 6600) ........ Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 434470 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r--channels/chan_skinny.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 3d56cc840..d1c05abec 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -2374,6 +2374,7 @@ static char *callstate2str(int ind)
static int transmit_response_bysession(struct skinnysession *s, struct skinny_req *req)
{
int res = 0;
+ unsigned long len;
if (!s) {
ast_log(LOG_WARNING, "Asked to transmit to a non-existent session!\n");
@@ -2382,7 +2383,10 @@ static int transmit_response_bysession(struct skinnysession *s, struct skinny_re
ast_mutex_lock(&s->lock);
- if ((letohl(req->len) > SKINNY_MAX_PACKET) || (letohl(req->len) < 0)) {
+ /* Don't optimize out assigning letohl() to len. It is necessary to guarantee that the comparison will always catch invalid values.
+ * letohl() may or may not return a signed value depending upon which definition is used. */
+ len = letohl(req->len);
+ if (SKINNY_MAX_PACKET < len) {
ast_log(LOG_WARNING, "transmit_response: the length of the request (%u) is out of bounds (%d)\n", letohl(req->len), SKINNY_MAX_PACKET);
ast_mutex_unlock(&s->lock);
return -1;