[asterisk-commits] mjordan: branch 11 r434469 - in /branches/11: channels/ funcs/ include/asteri...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Apr 9 07:47:19 CDT 2015
Author: mjordan
Date: Thu Apr 9 07:47:09 2015
New Revision: 434469
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=434469
Log:
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.
Review: https://reviewboard.asterisk.org/r/4533
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4533.patch submitted by dkdegroot (License 6600)
Modified:
branches/11/channels/chan_skinny.c
branches/11/funcs/func_curl.c
branches/11/include/asterisk/cel.h
branches/11/main/cel.c
branches/11/main/enum.c
branches/11/main/event.c
branches/11/main/indications.c
branches/11/main/presencestate.c
branches/11/main/security_events.c
branches/11/main/translate.c
branches/11/main/udptl.c
Modified: branches/11/channels/chan_skinny.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/channels/chan_skinny.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/channels/chan_skinny.c (original)
+++ branches/11/channels/chan_skinny.c Thu Apr 9 07:47:09 2015
@@ -2229,6 +2229,7 @@
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");
@@ -2237,7 +2238,13 @@
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 (%d) is out of bounds (%d)\n", letohl(req->len), SKINNY_MAX_PACKET);
ast_mutex_unlock(&s->lock);
return -1;
Modified: branches/11/funcs/func_curl.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/funcs/func_curl.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/funcs/func_curl.c (original)
+++ branches/11/funcs/func_curl.c Thu Apr 9 07:47:09 2015
@@ -171,7 +171,7 @@
#define CURLVERSION_ATLEAST(a,b,c) \
((LIBCURL_VERSION_MAJOR > (a)) || ((LIBCURL_VERSION_MAJOR == (a)) && (LIBCURL_VERSION_MINOR > (b))) || ((LIBCURL_VERSION_MAJOR == (a)) && (LIBCURL_VERSION_MINOR == (b)) && (LIBCURL_VERSION_PATCH >= (c))))
-#define CURLOPT_SPECIAL_HASHCOMPAT -500
+#define CURLOPT_SPECIAL_HASHCOMPAT ((CURLoption) -500)
static void curlds_free(void *data);
Modified: branches/11/include/asterisk/cel.h
URL: http://svnview.digium.com/svn/asterisk/branches/11/include/asterisk/cel.h?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/include/asterisk/cel.h (original)
+++ branches/11/include/asterisk/cel.h Thu Apr 9 07:47:09 2015
@@ -53,6 +53,8 @@
* \brief CEL event types
*/
enum ast_cel_event_type {
+ AST_CEL_INVALID_VALUE = -1,
+ AST_CEL_ALL = 0,
/*! \brief channel birth */
AST_CEL_CHANNEL_START = 1,
/*! \brief channel end */
@@ -105,7 +107,7 @@
AST_CEL_FORWARD = 25,
};
-/*!
+/*!
* \brief Check to see if CEL is enabled
*
* \since 1.8
Modified: branches/11/main/cel.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/cel.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/cel.c (original)
+++ branches/11/main/cel.c Thu Apr 9 07:47:09 2015
@@ -123,7 +123,7 @@
* \brief Map of ast_cel_event_type to strings
*/
static const char * const cel_event_types[CEL_MAX_EVENT_IDS] = {
- [0] = "ALL",
+ [AST_CEL_ALL] = "ALL",
[AST_CEL_CHANNEL_START] = "CHAN_START",
[AST_CEL_CHANNEL_END] = "CHAN_END",
[AST_CEL_ANSWER] = "ANSWER",
@@ -256,15 +256,12 @@
unsigned int i;
for (i = 0; i < ARRAY_LEN(cel_event_types); i++) {
- if (!cel_event_types[i]) {
- continue;
- }
-
- if (!strcasecmp(name, cel_event_types[i])) {
+ if (cel_event_types[i] && !strcasecmp(name, cel_event_types[i])) {
return i;
}
}
+ ast_log(LOG_ERROR, "Unknown event name '%s'\n", name);
return -1;
}
@@ -288,10 +285,10 @@
event_type = ast_cel_str_to_event_type(cur_event);
- if (event_type == 0) {
+ if (event_type == AST_CEL_ALL) {
/* All events */
eventset = (int64_t) -1;
- } else if (event_type == -1) {
+ } else if (event_type == AST_CEL_INVALID_VALUE) {
ast_log(LOG_WARNING, "Unknown event name '%s'\n",
cur_event);
} else {
@@ -416,7 +413,7 @@
const char *ast_cel_get_ama_flag_name(enum ast_cel_ama_flag flag)
{
- if (flag < 0 || flag >= ARRAY_LEN(cel_ama_flags)) {
+ if (flag >= ARRAY_LEN(cel_ama_flags)) {
ast_log(LOG_WARNING, "Invalid AMA flag: %u\n", flag);
return "Unknown";
}
Modified: branches/11/main/enum.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/enum.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/enum.c (original)
+++ branches/11/main/enum.c Thu Apr 9 07:47:09 2015
@@ -250,7 +250,7 @@
static int ebl_callback(void *context, unsigned char *answer, int len, unsigned char *fullanswer)
{
struct ebl_context *c = context;
- unsigned int i;
+ int i;
c->pos = 0; /* default to empty */
c->separator[0] = 0;
Modified: branches/11/main/event.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/event.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/event.c (original)
+++ branches/11/main/event.c Thu Apr 9 07:47:09 2015
@@ -295,7 +295,7 @@
type = ast_event_get_type(event);
- if (type < 0 || type >= ARRAY_LEN(event_names)) {
+ if (type >= ARRAY_LEN(event_names)) {
ast_log(LOG_ERROR, "Invalid event type - '%u'\n", type);
return "";
}
@@ -725,6 +725,7 @@
struct ast_event *event;
struct ast_event_sub *sub;
enum ast_event_type event_type = -1;
+ int found = 0;
struct ast_event_ie_val *ie_val;
if (event_sub->type != AST_EVENT_SUB)
@@ -733,12 +734,14 @@
AST_LIST_TRAVERSE(&event_sub->ie_vals, ie_val, entry) {
if (ie_val->ie_type == AST_EVENT_IE_EVENTTYPE) {
event_type = ie_val->payload.uint;
- break;
- }
- }
-
- if (event_type == -1)
+ found = 1;
+ break;
+ }
+ }
+
+ if (!found) {
return;
+ }
AST_RWDLLIST_RDLOCK(&ast_event_subs[event_type]);
AST_RWDLLIST_TRAVERSE(&ast_event_subs[event_type], sub, entry) {
@@ -763,7 +766,7 @@
{
struct ast_event_sub *sub;
- if (type < 0 || type >= AST_EVENT_TOTAL) {
+ if (type >= AST_EVENT_TOTAL) {
ast_log(LOG_ERROR, "%u is an invalid type!\n", type);
return NULL;
}
Modified: branches/11/main/indications.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/indications.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/indications.c (original)
+++ branches/11/main/indications.c Thu Apr 9 07:47:09 2015
@@ -360,14 +360,13 @@
if (tone_data.midinote) {
/* midi notes must be between 0 and 127 */
-
- if (tone_data.freq1 >= 0 && tone_data.freq1 <= 127) {
+ if (tone_data.freq1 <= 127) {
tone_data.freq1 = midi_tohz[tone_data.freq1];
} else {
tone_data.freq1 = 0;
}
- if (tone_data.freq2 >= 0 && tone_data.freq2 <= 127) {
+ if (tone_data.freq2 <= 127) {
tone_data.freq2 = midi_tohz[tone_data.freq2];
} else {
tone_data.freq2 = 0;
Modified: branches/11/main/presencestate.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/presencestate.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/presencestate.c (original)
+++ branches/11/main/presencestate.c Thu Apr 9 07:47:09 2015
@@ -240,7 +240,7 @@
state = ast_presence_state_helper(provider, &subtype, &message, 0);
- if (state < 0) {
+ if (state == AST_PRESENCE_INVALID) {
return;
}
Modified: branches/11/main/security_events.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/security_events.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/security_events.c (original)
+++ branches/11/main/security_events.c Thu Apr 9 07:47:09 2015
@@ -427,7 +427,7 @@
static int check_event_type(const enum ast_security_event_type event_type)
{
- if (event_type < 0 || event_type >= AST_SECURITY_EVENT_NUM_TYPES) {
+ if (event_type >= AST_SECURITY_EVENT_NUM_TYPES) {
ast_log(LOG_ERROR, "Invalid security event type %u\n", event_type);
return -1;
}
@@ -680,7 +680,7 @@
{
int res;
- if (sec->event_type < 0 || sec->event_type >= AST_SECURITY_EVENT_NUM_TYPES) {
+ if (sec->event_type >= AST_SECURITY_EVENT_NUM_TYPES) {
ast_log(LOG_ERROR, "Invalid security event type\n");
return -1;
}
Modified: branches/11/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/translate.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/translate.c (original)
+++ branches/11/main/translate.c Thu Apr 9 07:47:09 2015
@@ -263,9 +263,6 @@
*/
static struct translator_path *matrix_get(unsigned int x, unsigned int y)
{
- if (!(x >= 0 && y >= 0)) {
- return NULL;
- }
return __matrix[x] + y;
}
Modified: branches/11/main/udptl.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/udptl.c?view=diff&rev=434469&r1=434468&r2=434469
==============================================================================
--- branches/11/main/udptl.c (original)
+++ branches/11/main/udptl.c Thu Apr 9 07:47:09 2015
@@ -320,8 +320,7 @@
}
/* Encode the open type */
for (octet_idx = 0; ; num_octets -= enclen, octet_idx += enclen) {
- if ((enclen = encode_length(buf, len, num_octets)) < 0)
- return -1;
+ enclen = encode_length(buf, len, num_octets);
if (enclen + *len > buflen) {
ast_log(LOG_ERROR, "UDPTL (%s): Buffer overflow detected (%u + %u > %u)\n",
LOG_TAG(udptl), enclen, *len, buflen);
@@ -604,8 +603,7 @@
buf[len++] = 0x00;
/* The number of entries will always be zero, so it is pointless allowing
for the fragmented case here. */
- if (encode_length(buf, &len, 0) < 0)
- return -1;
+ encode_length(buf, &len, 0);
break;
case UDPTL_ERROR_CORRECTION_REDUNDANCY:
/* Encode the error recovery type */
@@ -616,8 +614,7 @@
entries = s->tx_seq_no;
/* The number of entries will always be small, so it is pointless allowing
for the fragmented case here. */
- if (encode_length(buf, &len, entries) < 0)
- return -1;
+ encode_length(buf, &len, entries);
/* Encode the elements */
for (i = 0; i < entries; i++) {
j = (entry - i - 1) & UDPTL_BUF_MASK;
More information about the asterisk-commits
mailing list