include/openpbx/lock.h: (in function opbx_mutex_init) include/openpbx/lock.h:490:25: Passed storage attr contains 1 undefined field: __mutexkind Storage derivable from a parameter, return value or global is not defined. Use /*@out@*/ to denote passed or returned storage which need not be defined. (Use -compdef to inhibit warning) include/openpbx/lock.h:490:2: Return value (type int) ignored: pthread_mutexatt... Result returned by function call is not used. If this is intended, can cast result to (void) to eliminate message. (Use -retvalint to inhibit warning) include/openpbx/lock.h:491:2: Unrecognized identifier: pthread_mutexattr_settype Identifier used in code has not been declared. (Use -unrecog to inhibit warning) include/openpbx/lock.h:491:35: Unrecognized identifier: PTHREAD_MUTEX_RECURSIVE include/openpbx/time.h: (in function opbx_tvzero) include/openpbx/time.h:63:9: Return value type boolean does not match declared type int: (t.tv_sec == 0 && t.tv_usec == 0) To make bool and int types equivalent, use +boolint. include/openpbx/time.h: (in function opbx_tveq) include/openpbx/time.h:93:9: Return value type boolean does not match declared type int: (_a.tv_sec == _b.tv_sec && _a.tv_usec == _b.tv_usec) include/openpbx/time.h: (in function opbx_tvnow) include/openpbx/time.h:104:2: Unrecognized identifier: gettimeofday include/openpbx/time.h:105:9: Variable t used before definition An rvalue is used that may not be initialized to a value on some execution path. (Use -usedef to inhibit warning) include/openpbx/time.h: (in function opbx_tv) include/openpbx/time.h:135:2: Variable t used before definition include/openpbx/strings.h: (in function opbx_strlen_zero) include/openpbx/strings.h:35:9: Return value type boolean does not match declared type int: (*s == '\0') include/openpbx/strings.h: (in function opbx_skip_blanks) include/openpbx/strings.h:47:17: Operands of < have incompatible types (char, int): *str < 33 To make char and int types equivalent, use +charint. include/openpbx/strings.h:47:9: Left operand of && is non-boolean (char): *str && *str < 33 The operand of a boolean operator is not a boolean. Use +ptrnegate to allow ! to be used on pointers. (Use -boolops to inhibit warning) include/openpbx/strings.h:49:9: Implicitly temp storage str returned as implicitly only: str Temp storage (associated with a formal parameter) is transferred to a non-temporary reference. The storage may be released or new aliases created. (Use -temptrans to inhibit warning) include/openpbx/strings.h: (in function opbx_trim_blanks) include/openpbx/strings.h:71:27: Operands of < have incompatible types (char, int): *work < 33 include/openpbx/strings.h:74:9: Implicitly temp storage str returned as implicitly only: str include/openpbx/strings.h: (in function opbx_skip_nonblanks) include/openpbx/strings.h:86:17: Operands of > have incompatible types (char, int): *str > 32 include/openpbx/strings.h:86:9: Left operand of && is non-boolean (char): *str && *str > 32 include/openpbx/strings.h:88:9: Implicitly temp storage str returned as implicitly only: str include/openpbx/strings.h: (in function opbx_strip) include/openpbx/strings.h:106:3: Return value (type char *) ignored: opbx_trim_blanks(s) Result returned by function call is not used. If this is intended, can cast result to (void) to eliminate message. (Use -retvalother to inhibit warning) include/openpbx/strings.h:107:9: Possibly null storage s returned as non-null: s Function returns a possibly null pointer, but is not declared using /*@null@*/ annotation of result. If function may return NULL, add /*@null@*/ annotation to the return value declaration. (Use -nullret to inhibit warning) include/openpbx/strings.h:104:6: Storage s may become null include/openpbx/strings.h: (in function opbx_copy_string) include/openpbx/strings.h:155:9: Operands of && are non-booleans (char, size_t): *src && size include/openpbx/strings.h:159:8: Operand of ! is non-boolean (size_t): !size include/openpbx/utils.h: (in function inaddrcmp) include/openpbx/utils.h:186:9: Return value type boolean does not match declared type int: ((sin1->sin_addr.s_addr != sin2->sin_addr.s_addr) || (sin1->sin_port != sin2->sin_port)) include/openpbx/channel.h: (in function opbx_select) include/openpbx/channel.h:1038:18: Variable tv shadows outer declaration An outer declaration is shadowed by the local declaration. (Use -shadow to inhibit warning) include/openpbx/time.h:33:23: Previous declaration of tv: struct timeval include/openpbx/channel.h:1045:3: Unrecognized identifier: timersub include/openpbx/channel.h:1047:10: Arrow access field of non-struct or union pointer (struct timeval *): tvp->tv_sec Types are incompatible. (Use -type to inhibit warning) include/openpbx/channel.h:1047:30: Arrow access field of non-struct or union pointer (struct timeval *): tvp->tv_sec include/openpbx/channel.h:1047:50: Arrow access field of non-struct or union pointer (struct timeval *): tvp->tv_usec include/openpbx/channel.h:1048:7: Arrow access field of non-struct or union pointer (struct timeval *): tvp->tv_sec include/openpbx/channel.h:1049:7: Arrow access field of non-struct or union pointer (struct timeval *): tvp->tv_usec include/openpbx/channel.h:1054:41: Null storage passed as non-null param: select (..., NULL) A possibly null pointer is passed as a parameter corresponding to a formal parameter with no /*@null@*/ annotation. If NULL may be used for this parameter, add a /*@null@*/ annotation to the function parameter declaration. (Use -nullpass to inhibit warning) include/openpbx/callerid.h: (in function callerid_getcarrier) include/openpbx/callerid.h:194:2: Assignment of double to float: t = 2.0 - (*cr * *cr + *ci * *ci) To allow all numeric types to match, use +relaxtypes. pbx.c:89:50: Initializer block for background_opts has 4 elements, but declared as struct opbx_option [128]: , , , Initializer does not define all elements of a declared array. (Use -initallelements to inhibit warning) pbx.c:98:49: Initializer block for waitexten_opts has 1 element, but declared as struct opbx_option [128]: pbx.c:226:43: Static maxcalllock.__m_owner initialized to null value: maxcalllock.__m_owner = 0 A reference with no null annotation is assigned or initialized to NULL. Use /*@null@*/ to declare the reference as a possibly null pointer. (Use -nullassign to inhibit warning) pbx.c:229:39: Static acflock.__m_owner initialized to null value: acflock.__m_owner = 0 pbx.c:230:48: Static acf_root initialized to null value: acf_root = NULL pbx.c:230:48: Static acf_root initialized to null value: struct opbx_custom_function * acf_root = NULL = NULL pbx.c:527:40: Static contexts initialized to null value: contexts = NULL pbx.c:527:40: Static contexts initialized to null value: struct opbx_context * contexts = NULL = NULL pbx.c:528:39: Static conlock.__m_owner initialized to null value: conlock.__m_owner = 0 pbx.c:529:32: Static apps initialized to null value: apps = NULL pbx.c:529:32: Static apps initialized to null value: struct opbx_app * apps = NULL = NULL pbx.c:530:39: Static applock.__m_owner initialized to null value: applock.__m_owner = 0 pbx.c:532:32: Global switches initialized to null value: switches = NULL pbx.c:532:32: Global switches initialized to null value: struct opbx_switch * switches = NULL = NULL pbx.c:533:42: Static switchlock.__m_owner initialized to null value: switchlock.__m_owner = 0 pbx.c:535:40: Static hintlock.__m_owner initialized to null value: hintlock.__m_owner = 0 pbx.c:537:27: Global hints initialized to null value: hints = NULL pbx.c:537:27: Global hints initialized to null value: struct opbx_hint * hints = NULL = NULL pbx.c:538:34: Global statecbs initialized to null value: statecbs = NULL pbx.c:538:34: Global statecbs initialized to null value: struct opbx_state_cb * statecbs = NULL = NULL pbx.c: (in function pbx_exec) pbx.c:554:6: Test expression for if not boolean, type int: newstack Test expression type is not boolean or int. (Use -predboolint to inhibit warning) pbx.c:562:3: Unqualified storage app->name assigned to implicitly only: c->appl = app->name Unqualified storage is transferred in an inconsistent way. (Use -unqualifiedtrans to inhibit warning) pbx.c:563:3: Implicitly temp storage data assigned to implicitly only: c->data = data pbx.c:564:17: Possibly null storage c->cdr derivable from parameter execute (c, ...) A possibly null pointer is reachable from a parameter or global variable that is not declared using a /*@null@*/ annotation. (Use -nullstate to inhibit warning) pbx.c:566:3: Implicitly only storage c->appl (type char *) not released before assignment: c->appl = saved_c_appl A memory leak has been detected. Only-qualified storage is not released before the last reference to it is lost. (Use -mustfreeonly to inhibit warning) pbx.c:567:3: Implicitly only storage c->data (type char *) not released before assignment: c->data = saved_c_data pbx.c:568:14: Storage app->name reachable from parameter is kept (should be unqualified) Storage derivable from a parameter does not match the alias kind expected for the formal parameter. (Use -compmempass to inhibit warning) pbx.c:562:3: Storage app->name becomes kept pbx.c: (in function pbx_findapp) pbx.c:589:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:591:10: Null storage returned as non-null: NULL pbx.c:595:8: Unrecognized identifier: strcasecmp pbx.c:599:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:600:9: Null storage tmp returned as non-null: tmp pbx.c:593:8: Storage tmp becomes null pbx.c:600:13: Function returns with global apps referencing released storage A global variable does not satisfy its annotations when control is transferred. (Use -globstate to inhibit warning) pbx.c:600:9: Storage apps released pbx.c: (in function pbx_findswitch) pbx.c:607:6: Test expression for if not boolean, type int: pthread_mutex_lock(&switchlock) pbx.c:609:10: Null storage returned as non-null: NULL pbx.c:617:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:618:9: Null storage asw returned as non-null: asw pbx.c:611:8: Storage asw becomes null pbx.c:618:13: Function returns with global switches referencing released storage pbx.c:618:9: Storage switches released pbx.c: (in function include_valid) pbx.c:623:7: Operand of ! is non-boolean (int): !i->hastime pbx.c: (in function pbx_destroy) pbx.c:631:7: Implicitly temp storage p passed as only param: free (p) pbx.c: (in function opbx_extension_match) pbx.c:715:7: Operand of ! is non-boolean (int): !strcmp(pattern, data) pbx.c:717:121: Operands of && are non-booleans (int, char): match && *data pbx.c:717:139: Right operand of && is non-boolean (char): match && *data && *pattern pbx.c:717:417: Operands of > have incompatible types (int, size_t): border > strlen(pattern) To allow arbitrary integral types to match any integral type, use +matchanyintegral. pbx.c:717:1436: Operand of ! is non-boolean (char): !*data pbx.c:717:1426: Left operand of && is non-boolean (int): match && !*data pbx.c:719:16: Left operand of && is non-boolean (char): *pattern && (*pattern != '/') pbx.c:719:6: Left operand of || is non-boolean (char): *data || (*pattern && (*pattern != '/')) pbx.c: (in function opbx_extension_close) pbx.c:732:42: Unrecognized identifier: strncasecmp pbx.c:733:5: Operand of ! is non-boolean (int): !needmore pbx.c:736:121: Operands of && are non-booleans (int, char): match && *data pbx.c:736:139: Right operand of && is non-boolean (char): match && *data && *pattern pbx.c:736:417: Operands of > have incompatible types (int, size_t): border > strlen(pattern) pbx.c:736:1436: Operand of ! is non-boolean (char): !*data pbx.c:736:1426: Left operand of && is non-boolean (int): match && !*data pbx.c:739:7: Operand of ! is non-boolean (int): !needmore pbx.c:739:19: Right operand of || is non-boolean (char): !needmore || *pattern pbx.c: (in function opbx_context_find) pbx.c:748:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:758:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:759:9: Null storage tmp returned as non-null: tmp pbx.c:750:9: Storage tmp becomes null pbx.c:759:13: Function returns with global contexts referencing released storage pbx.c:759:9: Storage contexts released pbx.c: (in function matchcid) pbx.c:775:7: Operand of ! is non-boolean (int): !opbx_strlen_zero(cidpattern) pbx.c: (in function pbx_find_extension) pbx.c:796:7: Operand of ! is non-boolean (int): !*stacklen pbx.c:804:10: Null storage returned as non-null: NULL pbx.c:804:15: Function returns with null storage derivable from parameter *swo pbx.c:798:10: Storage *swo becomes null pbx.c:804:15: Function returns with null storage derivable from parameter *data pbx.c:799:11: Storage *data becomes null pbx.c:809:11: Null storage returned as non-null: NULL pbx.c:817:18: Operand of ! is non-boolean (int): !strcmp(tmp->name, context) pbx.c:817:7: Left operand of || is non-boolean (struct opbx_context *): bypass || !strcmp(tmp->name, context) pbx.c:825:28: Right operand of && is non-boolean (int): (action != 4) && opbx_extension_match(eroot->exten, exten) pbx.c:826:28: Right operand of && is non-boolean (int): (action == 3) && (opbx_extension_close(eroot->exten, exten, 0)) pbx.c:827:28: Right operand of && is non-boolean (int): (action == 4) && (match = opbx_extension_close(eroot->exten, exten, 1)) pbx.c:828:11: Operand of ! is non-boolean (int): !eroot->matchcid pbx.c:828:30: Right operand of || is non-boolean (int): !eroot->matchcid || matchcid(eroot->cidmatch, callerid) pbx.c:843:14: Operands of && are non-boolean (char *): label && e->label pbx.c:843:36: Operand of ! is non-boolean (int): !strcmp(label, e->label) pbx.c:846:19: Released storage bypass->root reachable from parameter at return point Memory is used after it has been released (either by passing as an only param or assigning to an only global). (Use -usereleased to inhibit warning) pbx.c:846:17: Storage bypass->root released pbx.c:846:19: Released storage contexts->root reachable from global pbx.c:846:17: Storage contexts->root released pbx.c:851:18: Released storage bypass->root reachable from parameter at return point pbx.c:851:16: Storage bypass->root released pbx.c:851:18: Released storage contexts->root reachable from global pbx.c:851:16: Storage contexts->root released pbx.c:863:12: Null storage returned as non-null: NULL pbx.c:870:10: Test expression for if not boolean, type int: sw->eval pbx.c:873:85: Test expression for conditional not boolean, type int: sw->eval pbx.c:875:87: Test expression for conditional not boolean, type int: sw->eval pbx.c:877:81: Test expression for conditional not boolean, type int: sw->eval pbx.c:878:10: Test expression for if not boolean, type int: res pbx.c:881:15: Test expression for conditional not boolean, type int: sw->eval pbx.c:881:7: Only storage sw->tmpdata assigned to unqualified: *data = sw->eval ? sw->tmpdata : sw->data The only reference to this storage is transferred to another reference (e.g., by returning it) that does not have the only annotation. This may lead to a memory leak, since the new reference is not necessarily released. (Use -onlytrans to inhibit warning) pbx.c:883:14: Null storage returned as non-null: NULL pbx.c:896:9: Test expression for if not boolean, type int: include_valid(i) pbx.c:897:75: Null storage label passed as non-null param: pbx_find_extension (..., label, ...) pbx.c:897:128: Null storage *swo derivable from parameter pbx_find_extension (..., swo, ...) pbx.c:798:10: Storage *swo becomes null pbx.c:897:133: Null storage *data derivable from parameter pbx_find_extension (..., data, ...) pbx.c:799:11: Storage *data becomes null pbx.c:898:16: Fresh storage asw not released before return A memory leak has been detected. Storage allocated locally is not released before the last reference to it is lost. (Use -mustfreefresh to inhibit warning) pbx.c:868:10: Fresh storage asw created pbx.c:900:14: Null storage returned as non-null: NULL pbx.c:900:19: Fresh storage asw not released before return pbx.c:868:10: Fresh storage asw created pbx.c:908:9: Null storage returned as non-null: NULL pbx.c: (in function pbx_retrieve_variable) pbx.c:927:20: Passed storage tmpvar not completely defined (*tmpvar is undefined): opbx_copy_string (tmpvar, ...) pbx.c:932:25: Possibly null storage c passed as non-null param: pbx_retrieve_variable (c, ...) pbx.c:932:34: Null storage *ret derivable from parameter pbx_retrieve_variable (..., ret, ...) pbx.c:925:7: Storage *ret becomes null pbx.c:934:11: Function returns with null storage derivable from parameter *ret pbx.c:925:7: Storage *ret becomes null pbx.c:943:4: Assignment of arbitrary unsigned integral type to int: offset2 = strlen(*ret) - offset pbx.c:948:7: Operands of > have incompatible types (int, size_t): abs(offset) > strlen(*ret) pbx.c:950:5: Assignment of size_t to int: offset = strlen(*ret) pbx.c:952:5: Assignment of size_t to int: offset = -strlen(*ret) pbx.c:954:60: Operands of > have incompatible types (int, size_t): offset + offset2 > strlen(*ret) pbx.c:956:5: Assignment of arbitrary unsigned integral type to int: offset2 = strlen(*ret) - offset pbx.c:958:5: Assignment of arbitrary unsigned integral type to int: offset2 = strlen(*ret) + offset pbx.c:965:19: Operand of ! is non-boolean (int): !strncmp(var, "CALL", 4) pbx.c:965:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strncmp(var, "CALL", 4) pbx.c:966:8: Operand of ! is non-boolean (int): !strncmp(var + 4, "ER", 2) pbx.c:967:9: Operand of ! is non-boolean (int): !strncmp(var + 6, "ID", 2) pbx.c:968:10: Operand of ! is non-boolean (char): !var[8] pbx.c:971:28: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:971:8: Return value (type int) ignored: snprintf(workspa... pbx.c:973:52: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:977:52: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:981:17: Operand of ! is non-boolean (int): !strcmp(var + 8, "NUM") pbx.c:984:51: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:988:17: Operand of ! is non-boolean (int): !strcmp(var + 8, "NAME") pbx.c:991:52: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:996:16: Operand of ! is non-boolean (int): !strcmp(var + 6, "ANI") pbx.c:999:50: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1005:15: Operand of ! is non-boolean (int): !strncmp(var + 4, "ING", 3) pbx.c:1006:9: Operand of ! is non-boolean (int): !strcmp(var + 7, "PRES") pbx.c:1008:25: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1008:5: Return value (type int) ignored: snprintf(workspa... pbx.c:1010:16: Operand of ! is non-boolean (int): !strcmp(var + 7, "ANI2") pbx.c:1012:25: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1012:5: Return value (type int) ignored: snprintf(workspa... pbx.c:1014:16: Operand of ! is non-boolean (int): !strcmp(var + 7, "TON") pbx.c:1016:25: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1016:5: Return value (type int) ignored: snprintf(workspa... pbx.c:1018:16: Operand of ! is non-boolean (int): !strcmp(var + 7, "TNS") pbx.c:1020:25: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1020:5: Return value (type int) ignored: snprintf(workspa... pbx.c:1026:19: Operand of ! is non-boolean (int): !strcmp(var, "DNID") pbx.c:1026:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "DNID") pbx.c:1028:49: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1032:19: Operand of ! is non-boolean (int): !strcmp(var, "HINT") pbx.c:1032:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "HINT") pbx.c:1033:47: Null storage passed as non-null param: opbx_get_hint (..., NULL, ...) pbx.c:1033:8: Operand of ! is non-boolean (int): !opbx_get_hint(workspace, workspacelen, NULL, 0, c, c->context, c->exten) pbx.c:1037:19: Operand of ! is non-boolean (int): !strcmp(var, "HINTNAME") pbx.c:1037:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "HINTNAME") pbx.c:1038:22: Null storage passed as non-null param: opbx_get_hint (NULL, ...) pbx.c:1038:8: Operand of ! is non-boolean (int): !opbx_get_hint(NULL, 0, workspace, workspacelen, c, c->context, c->exten) pbx.c:1042:19: Operand of ! is non-boolean (int): !strcmp(var, "EXTEN") pbx.c:1042:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "EXTEN") pbx.c:1043:41: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1045:19: Operand of ! is non-boolean (int): !strcmp(var, "RDNIS") pbx.c:1045:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "RDNIS") pbx.c:1047:50: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1051:19: Operand of ! is non-boolean (int): !strcmp(var, "CONTEXT") pbx.c:1051:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "CONTEXT") pbx.c:1052:43: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1054:19: Operand of ! is non-boolean (int): !strcmp(var, "PRIORITY") pbx.c:1054:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "PRIORITY") pbx.c:1055:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1055:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1057:19: Operand of ! is non-boolean (int): !strcmp(var, "CHANNEL") pbx.c:1057:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "CHANNEL") pbx.c:1058:40: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1060:14: Operand of ! is non-boolean (int): !strcmp(var, "EPOCH") pbx.c:1061:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1061:42: Format argument 1 to snprintf (%u) expects unsigned int gets int: (int)time(NULL) To ignore signs in type comparisons use +ignoresigns pbx.c:1061:39: Corresponding format code pbx.c:1061:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1063:14: Operand of ! is non-boolean (int): !strcmp(var, "DATETIME") pbx.c:1065:3: Unrecognized identifier: localtime_r pbx.c:1068:4: Field brokentime.tm_mon used before definition pbx.c:1069:4: Field brokentime.tm_year used before definition pbx.c:1066:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1067:4: Field brokentime.tm_mday used before definition pbx.c:1070:4: Field brokentime.tm_hour used before definition pbx.c:1071:4: Field brokentime.tm_min used before definition pbx.c:1072:4: Field brokentime.tm_sec used before definition pbx.c:1066:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1075:14: Operand of ! is non-boolean (int): !strcmp(var, "TIMESTAMP") pbx.c:1080:4: Field brokentime.tm_year used before definition pbx.c:1081:4: Field brokentime.tm_mon used before definition pbx.c:1079:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1082:4: Field brokentime.tm_mday used before definition pbx.c:1083:4: Field brokentime.tm_hour used before definition pbx.c:1084:4: Field brokentime.tm_min used before definition pbx.c:1085:4: Field brokentime.tm_sec used before definition pbx.c:1079:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1088:19: Operand of ! is non-boolean (int): !strcmp(var, "UNIQUEID") pbx.c:1088:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "UNIQUEID") pbx.c:1089:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1089:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1091:19: Operand of ! is non-boolean (int): !strcmp(var, "HANGUPCAUSE") pbx.c:1091:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "HANGUPCAUSE") pbx.c:1092:23: Function snprintf expects arg 2 to be size_t gets int: workspacelen pbx.c:1092:3: Return value (type int) ignored: snprintf(workspa... pbx.c:1094:19: Operand of ! is non-boolean (int): !strcmp(var, "ACCOUNTCODE") pbx.c:1094:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "ACCOUNTCODE") pbx.c:1095:47: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1097:19: Operand of ! is non-boolean (int): !strcmp(var, "LANGUAGE") pbx.c:1097:13: Left operand of && is non-boolean (struct opbx_channel *): c && !strcmp(var, "LANGUAGE") pbx.c:1098:44: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1110:41: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1111:7: Fresh storage *ret (type char *) not released before assignment: *ret = workspace pbx.c:1108:6: Fresh storage *ret created pbx.c:1126:41: Function opbx_copy_string expects arg 3 to be size_t gets int: workspacelen pbx.c:1132:2: Clauses exit with var referencing stack storage in true branch, implicitly temp storage in false branch The state of a variable is different depending on which branch is taken. This means no annotation can sensibly be applied to the storage. (Use -branchstate to inhibit warning) pbx.c:928:3: Storage var becomes stack-allocated storage pbx.c:1133:2: Function returns with null storage derivable from parameter *ret pbx.c:925:7: Storage *ret becomes null pbx.c: (in function handle_show_functions) pbx.c:1135:46: Parameter argc not used A function parameter is not used in the body of the function. If the argument is needed for type compatibility or future plans, use /*@unused@*/ in the argument declaration. (Use -paramuse to inhibit warning) pbx.c:1135:58: Parameter argv not used pbx.c: (in function handle_show_function) pbx.c:1167:3: Assignment of arbitrary unsigned integral type to int: synopsis_size = strlen(acf->synopsis) + 23 pbx.c:1169:3: Assignment of arbitrary unsigned integral type to int: synopsis_size = strlen("Not available") + 23 pbx.c:1170:13: Unrecognized identifier: alloca pbx.c:1173:3: Assignment of arbitrary unsigned integral type to int: description_size = strlen(acf->desc) + 23 pbx.c:1175:3: Assignment of arbitrary unsigned integral type to int: description_size = strlen("Not available") + 23 pbx.c:1179:3: Assignment of arbitrary unsigned integral type to int: syntax_size = strlen(acf->syntax) + 23 pbx.c:1181:3: Assignment of arbitrary unsigned integral type to int: syntax_size = strlen("Not available") + 23 pbx.c:1184:2: Return value (type int) ignored: snprintf(info, 6... pbx.c:1185:13: Passed storage infotitle not completely defined (*infotitle is undefined): term_color (infotitle, ...) pbx.c:1185:2: Return value (type char *) ignored: term_color(infot... pbx.c:1186:13: Passed storage stxtitle not completely defined (*stxtitle is undefined): term_color (stxtitle, ...) pbx.c:1186:2: Return value (type char *) ignored: term_color(stxti... pbx.c:1187:13: Passed storage syntitle not completely defined (*syntitle is undefined): term_color (syntitle, ...) pbx.c:1187:2: Return value (type char *) ignored: term_color(synti... pbx.c:1188:13: Passed storage destitle not completely defined (*destitle is undefined): term_color (destitle, ...) pbx.c:1188:2: Return value (type char *) ignored: term_color(desti... pbx.c:1189:2: Return value (type char *) ignored: term_color(synta... pbx.c:1192:2: Return value (type char *) ignored: term_color(synop... pbx.c:1195:2: Return value (type char *) ignored: term_color(descr... pbx.c:1201:11: Fresh storage acf not released before return pbx.c:1160:8: Fresh storage acf created pbx.c: (in function complete_show_function) pbx.c:1210:6: Test expression for if not boolean, type int: pthread_mutex_lock(&acflock) pbx.c:1219:17: Unrecognized identifier: strdup pbx.c:1220:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:1227:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:1204:43: Parameter line not used pbx.c:1204:65: Parameter pos not used pbx.c: (in function opbx_custom_function_find) pbx.c:1236:6: Test expression for if not boolean, type int: pthread_mutex_lock(&acflock) pbx.c:1242:8: Operand of ! is non-boolean (int): !strcmp(name, acfptr->name) pbx.c:1247:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:1249:16: Function returns with global acf_root referencing released storage pbx.c:1249:9: Storage acf_root released pbx.c: (in function opbx_custom_function_unregister) pbx.c:1261:6: Test expression for if not boolean, type int: pthread_mutex_lock(&acflock) pbx.c:1269:5: Implicitly only storage lastacf->next (type struct opbx_custom_function *) not released before assignment: lastacf->next = acf->next pbx.c:1271:5: Only storage acf->next assigned to unqualified static: acf_root = acf->next pbx.c:1272:4: Clauses exit with acf->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:1269:5: Storage acf->next becomes kept pbx.c:1279:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:1281:7: Operand of ! is non-boolean (int): !res pbx.c: (in function opbx_custom_function_register) pbx.c:1293:6: Test expression for if not boolean, type int: pthread_mutex_lock(&acflock) pbx.c:1300:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:1304:2: Implicitly only storage acf->next (type struct opbx_custom_function *) not released before assignment: acf->next = acf_root pbx.c:1304:2: Unqualified static storage acf_root assigned to implicitly only: acf->next = acf_root Static storage is transferred in an inconsistent way. (Use -statictrans to inhibit warning) pbx.c:1307:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_func_read) pbx.c:1321:13: Unrecognized identifier: opbx_strdupa pbx.c:1324:10: Observer storage ret returned without qualification: ret Observer storage is transferred to a non-observer reference. (Use -observertrans to inhibit warning) pbx.c:1318:14: Storage ret becomes observer pbx.c:1341:62: Fresh storage acfptr not released before return pbx.c:1338:7: Fresh storage acfptr created pbx.c:1348:9: Observer storage ret returned without qualification: ret pbx.c:1318:14: Storage ret becomes observer pbx.c:1348:13: Fresh storage acfptr not released before return pbx.c:1338:7: Fresh storage acfptr created pbx.c: (in function opbx_func_write) pbx.c:1383:2: Fresh storage acfptr not released before return pbx.c:1373:7: Fresh storage acfptr created pbx.c: (in function pbx_substitute_variables_helper_full) pbx.c:1399:9: Operand of ! is non-boolean (int): !opbx_strlen_zero(whereweare) pbx.c:1399:41: Right operand of && is non-boolean (int): !opbx_strlen_zero(whereweare) && count pbx.c:1401:3: Assignment of size_t to int: pos = strlen(whereweare) pbx.c:1418:7: Test expression for if not boolean, type int: pos pbx.c:1424:28: Function memcpy expects arg 3 to be size_t gets int: pos pbx.c:1424:11: Parameter 1 (cp2) to function memcpy is declared unique but may be aliased externally by parameter 2 (whereweare) A unique or only parameter may be aliased by some other parameter or visible global. (Use -mayaliasunique to inhibit warning) pbx.c:1440:10: Operands of && are non-booleans (int, char): brackets && *vare pbx.c:1450:8: Test expression for if not boolean, type int: brackets pbx.c:1461:32: Function opbx_copy_string expects arg 3 to be size_t gets int: len + 1 pbx.c:1464:8: Test expression for if not boolean, type int: needsub pbx.c:1487:36: Passed storage &cp4 not completely defined: pbx_retrieve_variable (..., &cp4, ...) pbx.c:1488:4: Clauses exit with cp4 referencing fresh storage in true branch, local storage in false branch pbx.c:1482:5: Fresh storage cp4 created pbx.c:1490:5: Assignment of size_t to int: length = strlen(cp4) pbx.c:1493:22: Function memcpy expects arg 3 to be size_t gets int: length pbx.c:1506:10: Operands of && are non-booleans (int, char): brackets && *vare pbx.c:1521:8: Test expression for if not boolean, type int: brackets pbx.c:1532:32: Function opbx_copy_string expects arg 3 to be size_t gets int: len + 1 pbx.c:1535:8: Test expression for if not boolean, type int: needsub pbx.c:1548:8: Test expression for if not boolean, type int: length pbx.c: (in function pbx_substitute_variables) pbx.c:1570:22: Function memset expects arg 3 to be size_t gets int: datalen pbx.c:1574:39: Function opbx_copy_string expects arg 3 to be size_t gets int: datalen pbx.c: (in function pbx_extension_helper) pbx.c:1600:6: Test expression for if not boolean, type int: pthread_mutex_lock(&conlock) pbx.c:1607:84: Passed storage incstack not completely defined (*incstack is undefined): pbx_find_extension (..., incstack, ...) pbx.c:1607:114: Passed storage &sw not completely defined: pbx_find_extension (..., &sw, ...) pbx.c:1607:119: Passed storage &data not completely defined: pbx_find_extension (..., &data, ...) pbx.c:1611:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1612:14: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1614:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1615:14: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1618:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1619:15: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1621:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1622:14: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1626:8: Fall through case (no preceding break) Execution falls through from the previous case. (Use -casebreak to inhibit warning) pbx.c:1628:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1635:46: Function pbx_substitute_variables expects arg 2 to be int gets size_t: sizeof((passdata)) pbx.c:1635:30: Passed storage passdata not completely defined (*passdata is undefined): pbx_substitute_variables (passdata, ...) pbx.c:1636:9: Test expression for if not boolean, type int: option_debug pbx.c:1638:7: Return value (type int) ignored: snprintf(atmp, 8... pbx.c:1639:81: Operand of ! is non-boolean (int): !opbx_strlen_zero(passdata) pbx.c:1639:135: Test expression for conditional not boolean, type int: newstack pbx.c:1639:7: Return value (type int) ignored: snprintf(atmp2, ... pbx.c:1644:55: Function term_color expects arg 5 to be int gets size_t: sizeof((tmp)) pbx.c:1644:20: Passed storage tmp not completely defined (*tmp is undefined): term_color (tmp, ...) pbx.c:1645:54: Function term_color expects arg 5 to be int gets size_t: sizeof((tmp2)) pbx.c:1645:20: Passed storage tmp2 not completely defined (*tmp2 is undefined): term_color (tmp2, ...) pbx.c:1646:28: Operand of ! is non-boolean (int): !opbx_strlen_zero(passdata) pbx.c:1646:100: Function term_color expects arg 5 to be int gets size_t: sizeof((tmp3)) pbx.c:1646:20: Passed storage tmp3 not completely defined (*tmp3 is undefined): term_color (tmp3, ...) pbx.c:1647:10: Test expression for conditional not boolean, type int: newstack pbx.c:1656:61: Test expression for conditional not boolean, type char [8192]: passdata Test expression type is not boolean. (Use -predboolothers to inhibit warning) pbx.c:1648:5: Return value (type int) ignored: manager_event((1... pbx.c:1658:16: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1658:16: Fresh storage app not released before return pbx.c:1627:4: Fresh storage app created pbx.c:1661:15: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1664:112: Fresh storage e not released before return pbx.c:1607:2: Fresh storage e created pbx.c:1669:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1672:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1675:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1678:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1683:8: Fall through case (no preceding break) pbx.c:1684:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1697:3: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_hint_extension) pbx.c:1738:6: Test expression for if not boolean, type int: pthread_mutex_lock(&conlock) pbx.c:1742:68: Passed storage incstack not completely defined (*incstack is undefined): pbx_find_extension (..., incstack, ...) pbx.c:1742:98: Passed storage &sw not completely defined: pbx_find_extension (..., &sw, ...) pbx.c:1742:103: Passed storage &data not completely defined: pbx_find_extension (..., &data, ...) pbx.c:1743:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_extension_state2) pbx.c:1759:25: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(e) pbx.c:1765:4: Assignment of int to char: *rest = 0 pbx.c:1803:7: Operand of ! is non-boolean (int): !inuse pbx.c:1803:16: Right operand of && is non-boolean (int): !inuse && ring pbx.c:1805:6: Operands of && are non-boolean (int): inuse && ring pbx.c:1807:6: Test expression for if not boolean, type int: inuse pbx.c:1809:6: Test expression for if not boolean, type int: allfree pbx.c:1811:6: Test expression for if not boolean, type int: allbusy pbx.c:1813:6: Test expression for if not boolean, type int: allunavailable pbx.c:1815:6: Test expression for if not boolean, type int: busy pbx.c: (in function opbx_extension_state2str) pbx.c:1826:15: Operands of < have incompatible types (int, arbitrary unsigned integral type): i < (sizeof((extension_states)) / sizeof((extension_states[0 ]))) pbx.c:1828:36: Released storage extension_states[].text reachable from global pbx.c:1828:11: Storage extension_states[].text released pbx.c:1831:9: Observer storage returned without qualification: "Unknown" pbx.c:1831:9: Storage becomes observer pbx.c: (in function opbx_extension_state) pbx.c:1843:34: Fresh storage e not released before return pbx.c:1839:2: Fresh storage e created pbx.c: (in function opbx_hint_state_changed) pbx.c:1855:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:1858:20: Passed storage buf not completely defined (*buf is undefined): opbx_copy_string (buf, ...) pbx.c:1858:25: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(hint->exten) pbx.c:1860:14: Unrecognized identifier: strsep pbx.c:1861:8: Test expression for if not boolean, type int: strcmp(cur, device) pbx.c:1874:5: Return value (type int) ignored: cblist->callback... pbx.c:1878:5: Return value (type int) ignored: cblist->callback... pbx.c:1885:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_extension_state_add) pbx.c:1898:3: Return value (type int) ignored: pthread_mutex_lo... pbx.c:1903:5: Implicitly only storage cblist->data (type void *) not released before assignment: cblist->data = data pbx.c:1903:5: Implicitly temp storage data assigned to implicitly only: cblist->data = data pbx.c:1904:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:1913:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:1919:3: Implicitly only storage cblist->data (type void *) not released before assignment: cblist->data = data pbx.c:1919:3: Implicitly temp storage data assigned to implicitly only: cblist->data = data pbx.c:1921:3: Implicitly only storage cblist->next (type struct opbx_state_cb *) not released before assignment: cblist->next = statecbs pbx.c:1921:3: Unqualified storage statecbs assigned to implicitly only: cblist->next = statecbs pbx.c:1924:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:1938:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:1949:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:1950:13: Fresh storage e not released before return pbx.c:1932:2: Fresh storage e created pbx.c:1956:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:1957:13: Fresh storage e not released before return pbx.c:1932:2: Fresh storage e created pbx.c:1962:2: Implicitly only storage cblist->data (type void *) not released before assignment: cblist->data = data pbx.c:1962:2: Implicitly temp storage data assigned to implicitly only: cblist->data = data pbx.c:1964:2: Implicitly only storage cblist->next (type struct opbx_state_cb *) not released before assignment: cblist->next = list->callbacks pbx.c:1967:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:1968:20: Fresh storage e not released before return pbx.c:1932:2: Fresh storage e created pbx.c: (in function opbx_extension_state_del) pbx.c:1977:7: Operand of ! is non-boolean (int): !id pbx.c:1980:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:1983:7: Operand of ! is non-boolean (int): !id pbx.c:1989:10: Only storage cblist->next assigned to unqualified: statecbs = cblist->next pbx.c:1991:10: Implicitly only storage cbprev->next (type struct opbx_state_cb *) not released before assignment: cbprev->next = cblist->next pbx.c:1991:10: Storage cblist->next is kept in one path, but live in another. pbx.c:1991:10: Storage cblist->next becomes kept pbx.c:1991:10: Storage statecbs->next is kept in one path, but live in another. pbx.c:1991:10: Storage statecbs->next becomes kept pbx.c:1993:10: Only storage cblist->data (type void *) derived from released storage is not released (memory leak): cblist A storage leak due to incomplete deallocation of a structure or deep pointer is suspected. Unshared storage that is reachable from a reference that is being deallocated has not yet been deallocated. Splint assumes when an object is passed as an out only void pointer that the outer object will be deallocated, but the inner objects will not. (Use -compdestroy to inhibit warning) pbx.c:1993:10: Only storage cblist->callback (type opbx_state_cb_type) derived from released storage is not released (memory leak): cblist pbx.c:1995:12: Return value (type int) ignored: pthread_mutex_un... pbx.c:1996:14: Function returns with global statecbs referencing released storage pbx.c:1993:10: Storage statecbs released pbx.c:2002:3: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2017:10: Implicitly only storage cbprev->next (type struct opbx_state_cb *) not released before assignment: cbprev->next = cblist->next pbx.c:2017:10: Clauses exit with cblist referencing implicitly only storage in true branch, local storage in false branch pbx.c:2015:10: Storage cblist becomes implicitly only (through alias list->callbacks) pbx.c:2017:10: Storage list->callbacks->next is kept in one path, but live in another. pbx.c:2017:10: Storage list->callbacks->next becomes kept pbx.c:2017:10: Storage hints->callbacks->next is kept in one path, but live in another. pbx.c:2017:10: Storage hints->callbacks->next becomes kept pbx.c:2021:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:2022:14: Released storage hints->callbacks reachable from global pbx.c:2019:10: Storage hints->callbacks released pbx.c:2030:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_add_hint) pbx.c:2042:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2048:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2061:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:2068:2: Implicitly only storage list->exten (type struct opbx_exten *) not released before assignment: list->exten = e pbx.c:2068:2: Implicitly temp storage e assigned to implicitly only: list->exten = e pbx.c:2070:2: Implicitly only storage list->next (type struct opbx_hint *) not released before assignment: list->next = hints pbx.c:2070:2: Unqualified storage hints assigned to implicitly only: list->next = hints pbx.c:2073:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_change_hint) pbx.c:2082:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2087:8: Implicitly only storage list->exten (type struct opbx_exten *) not released before assignment: list->exten = ne pbx.c:2087:8: Implicitly temp storage ne assigned to implicitly only: list->exten = ne pbx.c:2088:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2093:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_remove_hint) pbx.c:2108:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2119:5: Return value (type int) ignored: cbprev->callback... pbx.c:2120:10: Only storage cbprev->data (type void *) derived from released storage is not released (memory leak): cbprev pbx.c:2120:10: Only storage cbprev->callback (type opbx_state_cb_type) derived from released storage is not released (memory leak): cbprev pbx.c:2120:10: Only storage cbprev->next (type struct opbx_state_cb *) derived from released storage is not released (memory leak): cbprev pbx.c:2125:5: Only storage list->next assigned to unqualified: hints = list->next pbx.c:2127:5: Implicitly only storage prev->next (type struct opbx_hint *) not released before assignment: prev->next = list->next pbx.c:2127:5: Storage hints->next is kept in one path, but live in another. pbx.c:2127:5: Storage hints->next becomes kept pbx.c:2128:13: Only storage list->exten (type struct opbx_exten *) derived from released storage is not released (memory leak): list pbx.c:2128:13: Only storage list->callbacks (type struct opbx_state_cb *) derived from released storage is not released (memory leak): list pbx.c:2130:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2131:13: Function returns with global hints referencing released storage pbx.c:2128:13: Storage hints released pbx.c:2138:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_get_hint) pbx.c:2152:57: Function opbx_copy_string expects arg 3 to be size_t gets int: hintsize pbx.c:2152:30: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(e) pbx.c:2156:42: Function opbx_copy_string expects arg 3 to be size_t gets int: namesize pbx.c:2158:16: Fresh storage e not released before return pbx.c:2149:2: Fresh storage e created pbx.c:2158:16: Fresh storage tmp not released before return pbx.c:2154:4: Fresh storage tmp created pbx.c: (in function __opbx_pbx_run) pbx.c:2211:2: Implicitly only storage c->pbx (type struct opbx_pbx *) not released before assignment: c->pbx = malloc(sizeof(struct opbx_pbx)) pbx.c:2214:13: Function returns with possibly null storage derivable from parameter c->pbx pbx.c:2211:11: Storage c->pbx may become null pbx.c:2214:13: Storage *(c->pbx) reachable from parameter contains 2 undefined fields: dtimeout, rtimeout pbx.c:2216:6: Test expression for if not boolean, type int: c->amaflags pbx.c:2222:15: Released storage c->pbx reachable from parameter at return point pbx.c:2221:10: Storage c->pbx released pbx.c:2224:26: Passed storage *(c->pbx) contains 2 undefined fields: dtimeout, rtimeout pbx.c:2224:4: Return value (type int) ignored: opbx_cdr_init(c-... pbx.c:2232:2: Assignment of unsigned int to int: autoloopflag = ({ ; unsigned int __p = (c)->flags; ; unsigned int __x = 0; (void)(&__p == &__x); ((c)->flags & ((1 << 9))); }) pbx.c:2233:105: Statement has no effect: (void)(&__p == &__x) Statement has no visible effect --- no values are modified. (Use -noeffect to inhibit warning) pbx.c:2236:7: Operand of ! is non-boolean (int): !opbx_exists_extension(c, c->context, c->exten, c->priority, c->cid.cid_num) pbx.c:2241:8: Operand of ! is non-boolean (int): !opbx_exists_extension(c, c->context, c->exten, c->priority, c->cid.cid_num) pbx.c:2249:17: Operand of ! is non-boolean (struct timeval): !c->cdr->start.tv_sec pbx.c:2249:6: Left operand of && is non-boolean (struct opbx_cdr *): c->cdr && !c->cdr->start.tv_sec pbx.c:2249:42: Operand of ! is non-boolean (struct timeval): !c->cdr->start.tv_usec pbx.c:2254:31: Possibly null storage c->cdr derivable from parameter opbx_exists_extension (c, ...) pbx.c:2254:9: Test expression for while not boolean, type int: opbx_exists_extension(c, c->context, c->exten, c->priority, c->cid.cid_num) pbx.c:2256:8: Test expression for if not boolean, type int: (res = opbx_spawn_extension(c, c->context, c->exten, c->priority, c->cid.cid_num)) pbx.c:2258:11: Operands of >= have incompatible types (int, char): res >= '0' A character constant is used as an int. Use +charintliteral to allow character constants to be used as ints. (This is safe since the actual type of a char constant is int.) pbx.c:2258:27: Operands of <= have incompatible types (int, char): res <= '9' pbx.c:2258:45: Operands of >= have incompatible types (int, char): res >= 'A' pbx.c:2258:61: Operands of <= have incompatible types (int, char): res <= 'F' pbx.c:2259:7: Operands of == have incompatible types (int, char): res == '*' pbx.c:2259:23: Operands of == have incompatible types (int, char): res == '#' pbx.c:2263:6: Assignment of int to char: exten[pos++] = digit = res pbx.c:2268:10: Test expression for if not boolean, type int: option_debug pbx.c:2273:6: Unreachable code: break This code will never be reached on any possible execution. (Use -unreachable to inhibit warning) pbx.c:2275:10: Test expression for if not boolean, type int: option_debug pbx.c:2289:7: Return value (type int) ignored: opbx_cdr_update(c) pbx.c:2294:40: Right operand of && is non-boolean (int): (c->_softhangup == (1 << 3)) && (opbx_exists_extension(c, c->context, "T", 1, c->cid.cid_num)) pbx.c:2300:15: Test expression for if not boolean, type int: c->_softhangup pbx.c:2308:8: Operand of ! is non-boolean (int): !opbx_exists_extension(c, c->context, c->exten, 1, c->cid.cid_num) pbx.c:2310:8: Test expression for if not boolean, type int: opbx_exists_extension(c, c->context, "i", 1, c->cid.cid_num) pbx.c:2327:8: Test expression for if not boolean, type int: digit pbx.c:2329:14: Operand of ! is non-boolean (int): !autofallthrough pbx.c:2331:8: Test expression for if not boolean, type int: waittime pbx.c:2332:52: Passed storage exten not completely defined (*exten is undefined): opbx_matchmore_extension (..., exten, ...) pbx.c:2332:12: Test expression for while not boolean, type int: opbx_matchmore_extension(c, c->context, exten, 1, c->cid.cid_num) pbx.c:2339:12: Operand of ! is non-boolean (int): !digit pbx.c:2345:7: Assignment of int to char: exten[pos++] = digit pbx.c:2349:9: Test expression for if not boolean, type int: opbx_exists_extension(c, c->context, exten, 1, c->cid.cid_num) pbx.c:2355:11: Operand of ! is non-boolean (int): !opbx_strlen_zero(exten) pbx.c:2357:11: Test expression for if not boolean, type int: opbx_exists_extension(c, c->context, "i", 1, c->cid.cid_num) pbx.c:2369:11: Test expression for if not boolean, type int: opbx_exists_extension(c, c->context, "t", 1, c->cid.cid_num) pbx.c:2383:6: Return value (type int) ignored: opbx_cdr_update(c) pbx.c:2390:6: Clauses exit with status referencing unqualified static storage in true branch, fresh storage in continuation pbx.c:2388:5: Fresh storage status created pbx.c:2390:6: Storage status becomes static pbx.c:2403:6: Test expression for if not boolean, type int: firstpass pbx.c:2406:43: Possibly null storage c->cdr derivable from parameter opbx_exists_extension (c, ...) pbx.c:2406:21: Right operand of && is non-boolean (int): (res != 10) && opbx_exists_extension(c, c->context, "h", 1, c->cid.cid_num) pbx.c:2410:31: Possibly null storage c->cdr derivable from parameter opbx_exists_extension (c, ...) pbx.c:2410:9: Test expression for while not boolean, type int: opbx_exists_extension(c, c->context, c->exten, c->priority, c->cid.cid_num) pbx.c:2411:8: Test expression for if not boolean, type int: (res = opbx_spawn_extension(c, c->context, c->exten, c->priority, c->cid.cid_num)) pbx.c:2413:9: Test expression for if not boolean, type int: option_debug pbx.c:2422:105: Statement has no effect: (void)(&__p == &__x) pbx.c:2422:138: Test expression for if not boolean, type int: autoloopflag pbx.c:2425:2: Implicitly only storage c->pbx (type struct opbx_pbx *) not released before assignment: c->pbx = NULL pbx.c:2427:15: Possibly null storage c->cdr derivable from parameter opbx_hangup (c) pbx.c:2427:3: Return value (type int) ignored: opbx_hangup(c) pbx.c: (in function increase_call_count) pbx.c:2436:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2437:6: Test expression for if not boolean, type int: option_maxcalls pbx.c:2443:7: Operand of ! is non-boolean (int): !failed pbx.c:2445:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function decrease_call_count) pbx.c:2452:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:2455:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function pbx_thread) pbx.c:2470:2: Return value (type int) ignored: __opbx_pbx_run(c) pbx.c: (in function opbx_pbx_start) pbx.c:2488:6: Test expression for if not boolean, type int: increase_call_count(c) pbx.c:2492:20: Passed storage attr.__schedparam contains 1 undefined field: __sched_priority pbx.c:2492:20: Passed storage attr contains 8 undefined fields: __detachstate, __schedpolicy, __inheritsched, __scope, ... pbx.c:2492:2: Return value (type int) ignored: pthread_attr_ini... pbx.c:2493:2: Return value (type int) ignored: pthread_attr_set... pbx.c:2494:32: Passed storage &t not completely defined: opbx_pthread_create_stack (&t, ...) pbx.c:2494:6: Test expression for if not boolean, type int: opbx_pthread_create_stack(&t, &attr, pbx_thread, c, 0) pbx.c:2496:26: Only storage attr.__stackaddr (type void *) derived from variable declared in this scope is not released (memory leak) pbx.c:2499:26: Only storage attr.__stackaddr (type void *) derived from variable declared in this scope is not released (memory leak) pbx.c: (in function opbx_pbx_run) pbx.c:2506:6: Test expression for if not boolean, type int: increase_call_count(c) pbx.c: (in function opbx_context_remove_include) pbx.c:2538:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:2544:15: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:2544:8: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:2549:4: Return value (type int) ignored: opbx_unlock_cont... pbx.c:2552:15: Fresh storage c not released before return pbx.c:2541:2: Fresh storage c created pbx.c:2554:3: Fresh storage c (type struct opbx_context *) not released before assignment: c = opbx_walk_contexts(c) pbx.c:2541:2: Fresh storage c created pbx.c:2558:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c: (in function opbx_context_remove_include2) pbx.c:2574:6: Test expression for if not boolean, type int: pthread_mutex_lock(&con->lock) pbx.c:2580:8: Operand of ! is non-boolean (int): !strcmp(i->name, include) pbx.c:2581:20: Operand of ! is non-boolean (int): !strcmp(i->registrar, registrar) pbx.c:2584:5: Implicitly only storage pi->next (type struct opbx_include *) not released before assignment: pi->next = i->next pbx.c:2586:5: Storage con->includes->next is kept in one path, but live in another. pbx.c:2584:5: Storage con->includes->next becomes kept pbx.c:2586:5: Clauses exit with i referencing local storage in true branch, implicitly only storage in false branch pbx.c:2586:5: Storage i becomes implicitly only (through alias con->includes) pbx.c:2586:5: Clauses exit with con->includes->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2584:5: Storage con->includes->next becomes kept pbx.c:2589:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2590:13: Released storage con->includes reachable from parameter at return point pbx.c:2588:9: Storage con->includes released pbx.c:2597:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_context_remove_switch) pbx.c:2610:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:2616:15: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:2616:8: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:2621:4: Return value (type int) ignored: opbx_unlock_cont... pbx.c:2624:15: Fresh storage c not released before return pbx.c:2613:2: Fresh storage c created pbx.c:2626:3: Fresh storage c (type struct opbx_context *) not released before assignment: c = opbx_walk_contexts(c) pbx.c:2613:2: Fresh storage c created pbx.c:2630:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c: (in function opbx_context_remove_switch2) pbx.c:2646:6: Test expression for if not boolean, type int: pthread_mutex_lock(&con->lock) pbx.c:2652:8: Operand of ! is non-boolean (int): !strcmp(i->name, sw) pbx.c:2652:32: Operand of ! is non-boolean (int): !strcmp(i->data, data) pbx.c:2653:20: Operand of ! is non-boolean (int): !strcmp(i->registrar, registrar) pbx.c:2656:5: Implicitly only storage pi->next (type struct opbx_sw *) not released before assignment: pi->next = i->next pbx.c:2658:5: Storage con->alts->next is kept in one path, but live in another. pbx.c:2656:5: Storage con->alts->next becomes kept pbx.c:2658:5: Clauses exit with i referencing local storage in true branch, implicitly only storage in false branch pbx.c:2658:5: Storage i becomes implicitly only (through alias con->alts) pbx.c:2658:5: Clauses exit with con->alts->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2656:5: Storage con->alts->next becomes kept pbx.c:2661:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2662:13: Released storage con->alts reachable from parameter at return point pbx.c:2660:9: Storage con->alts released pbx.c:2669:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_context_remove_extension) pbx.c:2682:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:2688:15: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:2688:8: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:2693:4: Return value (type int) ignored: opbx_unlock_cont... pbx.c:2694:15: Fresh storage c not released before return pbx.c:2685:2: Fresh storage c created pbx.c:2696:3: Fresh storage c (type struct opbx_context *) not released before assignment: c = opbx_walk_contexts(c) pbx.c:2685:2: Fresh storage c created pbx.c:2700:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c: (in function opbx_context_remove_extension2) pbx.c:2718:6: Test expression for if not boolean, type int: pthread_mutex_lock(&con->lock) pbx.c:2725:8: Operand of ! is non-boolean (int): !strcmp(exten->exten, extension) pbx.c:2726:20: Operand of ! is non-boolean (int): !strcmp(exten->registrar, registrar) pbx.c:2733:6: Implicitly only storage prev_exten->next (type struct opbx_exten *) not released before assignment: prev_exten->next = exten->next pbx.c:2735:6: Storage con->root->next is kept in one path, but live in another. pbx.c:2733:6: Storage con->root->next becomes kept pbx.c:2735:6: Clauses exit with exten referencing local storage in true branch, implicitly only storage in false branch pbx.c:2735:6: Storage exten becomes implicitly only (through alias con->root) pbx.c:2735:6: Clauses exit with con->root->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2733:6: Storage con->root->next becomes kept pbx.c:2742:11: Operand of ! is non-boolean (int): !peer->priority pbx.c:2742:10: Operands of == have incompatible types (boolean, int): !peer->priority == -1 pbx.c:2743:27: Storage peer->next reachable from passed parameter is kept (should be implicitly only): peer pbx.c:2735:6: Storage peer->next becomes kept pbx.c:2743:10: Return value (type int) ignored: opbx_remove_hint... pbx.c:2746:11: Only storage peer->exten (type char *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->cidmatch (type char *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->label (type char *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->parent (type struct opbx_context *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->app (type char *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->data (type void *) derived from released storage is not released (memory leak): peer pbx.c:2746:11: Only storage peer->registrar (type char *) derived from released storage is not released (memory leak): peer pbx.c:2749:5: Clauses exit with exten referencing only storage in while body, local storage if loop is not taken pbx.c:2735:6: Storage exten becomes implicitly only (through alias con->root) pbx.c:2746:11: Storage exten becomes only pbx.c:2751:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:2752:14: Released storage con->root reachable from parameter at return point pbx.c:2746:11: Storage con->root released pbx.c:2761:23: Operand of ! is non-boolean (int): !strcmp(peer->registrar, registrar) pbx.c:2770:10: Implicitly only storage prev_exten->next (type struct opbx_exten *) not released before assignment: prev_exten->next = peer->peer pbx.c:2773:10: Implicitly only storage prev_exten->next (type struct opbx_exten *) not released before assignment: prev_exten->next = exten->next pbx.c:2773:10: Clauses exit with exten->peer referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2770:10: Storage exten->peer becomes kept pbx.c:2773:10: Clauses exit with con->root->peer referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2770:10: Storage con->root->peer becomes kept pbx.c:2781:10: Clauses exit with exten->peer referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2779:10: Storage exten->peer becomes kept pbx.c:2781:10: Storage exten->next is kept in one path, but live in another. pbx.c:2781:10: Storage exten->next becomes kept pbx.c:2781:10: Storage peer->next is kept in one path, but live in another. pbx.c:2781:10: Storage peer->next becomes kept pbx.c:2782:8: Storage peer->next is kept in one path, but live in another. pbx.c:2773:10: Storage peer->next becomes kept pbx.c:2782:8: Storage con->root->next is kept in one path, but live in another. pbx.c:2773:10: Storage con->root->next becomes kept pbx.c:2782:8: Clauses exit with exten referencing local storage in true branch, implicitly only storage in false branch pbx.c:2781:10: Storage exten becomes implicitly only (through alias con->root) pbx.c:2782:8: Clauses exit with con->root->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2773:10: Storage con->root->next becomes kept pbx.c:2785:8: Implicitly only storage previous_peer->peer (type struct opbx_exten *) not released before assignment: previous_peer->peer = peer->peer pbx.c:2790:28: Possibly null storage peer->peer derivable from parameter opbx_remove_hint (peer) pbx.c:2790:11: Return value (type int) ignored: opbx_remove_hint... pbx.c:2794:7: Return value (type int) ignored: pthread_mutex_un... pbx.c:2795:16: Released storage con->root reachable from parameter at return point pbx.c:2792:12: Storage con->root released pbx.c:2803:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:2813:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_register_application) pbx.c:2823:2: Assignment of size_t to int: length = sizeof(struct opbx_app) pbx.c:2825:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:2833:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:2838:15: Function malloc expects arg 1 to be size_t gets int: length pbx.c:2840:18: Function memset expects arg 3 to be size_t gets int: length pbx.c:2841:10: Parameter 1 (tmp->name) to function strcpy is declared unique but may be aliased externally by parameter 2 (app) pbx.c:2843:3: Implicitly only storage tmp->synopsis (type char *) not released before assignment: tmp->synopsis = synopsis pbx.c:2843:3: Implicitly temp storage synopsis assigned to implicitly only: tmp->synopsis = synopsis pbx.c:2844:3: Implicitly only storage tmp->description (type char *) not released before assignment: tmp->description = description pbx.c:2844:3: Implicitly temp storage description assigned to implicitly only: tmp->description = description pbx.c:2855:4: Implicitly only storage tmp->next (type struct opbx_app *) not released before assignment: tmp->next = prev->next pbx.c:2858:4: Implicitly only storage tmp->next (type struct opbx_app *) not released before assignment: tmp->next = apps pbx.c:2858:4: Unqualified static storage apps assigned to implicitly only: tmp->next = apps pbx.c:2863:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:2867:105: Function term_color expects arg 5 to be int gets size_t: sizeof((tmps)) pbx.c:2867:69: Passed storage tmps not completely defined (*tmps is undefined): term_color (tmps, ...) pbx.c:2868:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_register_switch) pbx.c:2875:6: Test expression for if not boolean, type int: pthread_mutex_lock(&switchlock) pbx.c:2887:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:2891:2: Implicitly only storage sw->next (type struct opbx_switch *) not released before assignment: sw->next = NULL pbx.c:2893:3: Implicitly only storage prev->next (type struct opbx_switch *) not released before assignment: prev->next = sw pbx.c:2893:3: Implicitly temp storage sw assigned to implicitly only: prev->next = sw pbx.c:2895:3: Variable sw is kept in true branch, but not kept in false branch. pbx.c:2895:3: in true branch: pbx.c:2893:3: Storage sw becomes kept pbx.c:2896:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_unregister_switch) pbx.c:2903:6: Test expression for if not boolean, type int: pthread_mutex_lock(&switchlock) pbx.c:2911:5: Implicitly only storage prev->next (type struct opbx_switch *) not released before assignment: prev->next = tmp->next pbx.c:2913:5: Only storage tmp->next assigned to unqualified: switches = tmp->next pbx.c:2913:5: Clauses exit with tmp->next referencing kept storage in true branch, implicitly only storage in false branch pbx.c:2911:5: Storage tmp->next becomes kept pbx.c:2920:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function complete_show_application) pbx.c:2978:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:2991:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:2999:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:2971:46: Parameter line not used pbx.c:2972:6: Parameter pos not used pbx.c: (in function handle_show_application) pbx.c:3011:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:3031:6: Assignment of arbitrary unsigned integral type to int: synopsis_size = strlen(a->synopsis) + 23 pbx.c:3033:6: Assignment of arbitrary unsigned integral type to int: synopsis_size = strlen("Not available") + 23 pbx.c:3037:6: Assignment of arbitrary unsigned integral type to int: description_size = strlen(a->description) + 23 pbx.c:3039:6: Assignment of arbitrary unsigned integral type to int: description_size = strlen("Not available") + 23 pbx.c:3042:9: Operands of && are non-boolean (char *): synopsis && description pbx.c:3043:6: Return value (type int) ignored: snprintf(info, 6... pbx.c:3044:17: Passed storage infotitle not completely defined (*infotitle is undefined): term_color (infotitle, ...) pbx.c:3044:6: Return value (type char *) ignored: term_color(infot... pbx.c:3045:17: Passed storage syntitle not completely defined (*syntitle is undefined): term_color (syntitle, ...) pbx.c:3045:6: Return value (type char *) ignored: term_color(synti... pbx.c:3046:17: Passed storage destitle not completely defined (*destitle is undefined): term_color (destitle, ...) pbx.c:3046:6: Return value (type char *) ignored: term_color(desti... pbx.c:3047:6: Return value (type char *) ignored: term_color(synop... pbx.c:3050:6: Return value (type char *) ignored: term_color(descr... pbx.c:3069:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:3072:6: Test expression for if not boolean, type int: no_registered_app pbx.c: (in function handle_show_hints) pbx.c:3094:6: Test expression for if not boolean, type int: pthread_mutex_lock(&hintlock) pbx.c:3111:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:3081:42: Parameter argc not used pbx.c:3081:54: Parameter argv not used pbx.c: (in function handle_show_switches) pbx.c:3125:6: Test expression for if not boolean, type int: pthread_mutex_lock(&switchlock) pbx.c:3134:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:3116:45: Parameter argc not used pbx.c:3116:57: Parameter argv not used pbx.c: (in function handle_show_applications) pbx.c:3149:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:3157:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:3162:23: Operand of ! is non-boolean (int): !strcmp(argv[2], "like") pbx.c:3164:29: Operand of ! is non-boolean (int): !strcmp(argv[2], "describing") pbx.c:3169:8: Operand of ! is non-boolean (int): !like pbx.c:3169:19: Operand of ! is non-boolean (int): !describing pbx.c:3180:7: Test expression for if not boolean, type int: like pbx.c:3185:14: Test expression for if not boolean, type int: describing pbx.c:3202:7: Test expression for if not boolean, type int: printapp pbx.c:3206:8: Operand of ! is non-boolean (int): !like pbx.c:3206:19: Operand of ! is non-boolean (int): !describing pbx.c:3213:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function complete_show_applications) pbx.c:3221:7: Test expression for if not boolean, type int: opbx_strlen_zero(word) pbx.c:3218:47: Parameter line not used pbx.c: (in function complete_show_dialplan_context) pbx.c:3260:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:3274:5: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3275:16: Fresh storage c not released before return pbx.c:3266:2: Fresh storage c created pbx.c:3278:3: Fresh storage c (type struct opbx_context *) not released before assignment: c = opbx_walk_contexts(c) pbx.c:3266:2: Fresh storage c created pbx.c:3282:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3250:51: Parameter line not used pbx.c: (in function show_dialplan_helper) pbx.c:3300:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:3309:12: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:3309:5: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:3313:9: Operand of ! is non-boolean (int): !opbx_lock_context(c) pbx.c:3338:29: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_name(e) pbx.c:3338:8: Operand of ! is non-boolean (int): !opbx_extension_match(opbx_get_extension_name(e), exten) pbx.c:3337:10: Left operand of && is non-boolean (char *): exten && !opbx_extension_match(opbx_get_extension_name(e), exten) pbx.c:3348:11: Operand of ! is non-boolean (int): !context_info_printed pbx.c:3365:6: Unrecognized identifier: bzero pbx.c:3367:7: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_name(e) pbx.c:3366:6: Return value (type int) ignored: snprintf(buf, si... pbx.c:3373:8: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(e) pbx.c:3371:7: Return value (type int) ignored: snprintf(buf2, s... pbx.c:3378:8: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(e) pbx.c:3379:8: New fresh storage (type char *) passed as implicitly temp (not released): (char *)opbx_get_extension_app_data(e) pbx.c:3375:7: Return value (type int) ignored: snprintf(buf2, s... pbx.c:3392:46: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_label(p) pbx.c:3392:8: Return value (type int) ignored: snprintf(buf, si... pbx.c:3397:9: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(p) pbx.c:3395:8: Return value (type int) ignored: snprintf(buf2, s... pbx.c:3402:9: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_extension_app(p) pbx.c:3403:9: New fresh storage (type char *) passed as implicitly temp (not released): (char *)opbx_get_extension_app_data(p) pbx.c:3399:8: Return value (type int) ignored: snprintf(buf2, s... pbx.c:3387:54: Fresh storage p (type struct opbx_exten *) not released before assignment (in post loop increment): p = opbx_walk_extension_priorities(e, p) pbx.c:3387:11: Fresh storage p created pbx.c:3410:6: Fresh storage p not released before scope exit pbx.c:3387:11: Fresh storage p created pbx.c:3332:56: Fresh storage e (type struct opbx_exten *) not released before assignment (in post loop increment): e = opbx_walk_context_extensions(c, e) pbx.c:3332:10: Fresh storage e created pbx.c:3416:7: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_include_name(i) pbx.c:3415:6: Return value (type int) ignored: snprintf(buf, si... pbx.c:3430:13: Operand of ! is non-boolean (int): !dupe pbx.c:3431:9: Only storage assigned to implicitly temp: includes[includecount] = (char *)opbx_get_include_name(i) pbx.c:3432:34: New fresh storage (type char *) passed as implicitly temp (not released): (char *)opbx_get_include_name(i) pbx.c:3432:9: Return value (type int) ignored: show_dialplan_he... pbx.c:3413:54: Fresh storage i (type struct opbx_include *) not released before assignment (in post loop increment): i = opbx_walk_context_includes(c, i) pbx.c:3413:10: Fresh storage i created pbx.c:3447:6: Return value (type int) ignored: snprintf(buf, si... pbx.c:3448:6: Return value (type int) ignored: snprintf(ignorep... pbx.c:3449:22: Right operand of || is non-boolean (int): (!exten) || opbx_extension_match(ignorepat, exten) pbx.c:3453:6: Fresh storage ipname not released before scope exit pbx.c:3445:55: Fresh storage ipname created pbx.c:3444:56: Fresh storage ip (type struct opbx_ignorepat *) not released before assignment (in post loop increment): ip = opbx_walk_context_ignorepats(c, ip) pbx.c:3444:10: Fresh storage ip created pbx.c:3457:8: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_switch_name(sw) pbx.c:3458:8: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_switch_data(sw) pbx.c:3456:7: Return value (type int) ignored: snprintf(buf, si... pbx.c:3455:57: Fresh storage sw (type struct opbx_sw *) not released before assignment (in post loop increment): sw = opbx_walk_context_switches(c, sw) pbx.c:3455:11: Fresh storage sw created pbx.c:3464:5: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3467:9: Test expression for if not boolean, type int: context_info_printed pbx.c:3468:5: Fresh storage e not released before scope exit pbx.c:3332:10: Fresh storage e created pbx.c:3468:5: Fresh storage i not released before scope exit pbx.c:3413:10: Fresh storage i created pbx.c:3468:5: Fresh storage ip not released before scope exit pbx.c:3444:10: Fresh storage ip created pbx.c:3468:5: Fresh storage sw not released before scope exit pbx.c:3455:11: Fresh storage sw created pbx.c:3306:41: Fresh storage c (type struct opbx_context *) not released before assignment (in post loop increment): c = opbx_walk_contexts(c) pbx.c:3306:7: Fresh storage c created pbx.c:3471:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3475:13: Fresh storage c not released before return pbx.c:3306:7: Fresh storage c created pbx.c:3477:14: Fresh storage c not released before return pbx.c:3306:7: Fresh storage c created pbx.c: (in function handle_show_dialplan) pbx.c:3496:7: Operands of && are non-boolean (char *): splitter && strchr(argv[2], '@') pbx.c:3502:8: Test expression for if not boolean, type int: opbx_strlen_zero(exten) pbx.c:3504:8: Test expression for if not boolean, type int: opbx_strlen_zero(context) pbx.c:3506:65: Passed storage incstack not completely defined (*incstack is undefined): show_dialplan_helper (..., incstack) pbx.c:3506:4: Return value (type int) ignored: show_dialplan_he... pbx.c:3510:8: Test expression for if not boolean, type int: opbx_strlen_zero(context) pbx.c:3512:65: Passed storage incstack not completely defined (*incstack is undefined): show_dialplan_helper (..., incstack) pbx.c:3512:4: Return value (type int) ignored: show_dialplan_he... pbx.c:3516:60: Passed storage incstack not completely defined (*incstack is undefined): show_dialplan_helper (..., incstack) pbx.c:3516:3: Return value (type int) ignored: show_dialplan_he... pbx.c:3520:18: Operand of ! is non-boolean (int): !counters.context_existence pbx.c:3520:6: Left operand of && is non-boolean (char *): context && !counters.context_existence pbx.c:3525:16: Operand of ! is non-boolean (int): !counters.extension_existence pbx.c:3525:6: Left operand of && is non-boolean (char *): exten && !counters.extension_existence pbx.c:3549:2: Initializer block for pbx_cli[0] has 5 fields, but struct opbx_cli_entry has 7 fields: { "show", "applications", NULL }, handle_show_applications, "Shows registered dialplan applications", show_applications_help, complete_show_applications Initializer does not set every field in the structure. (Use -fullinitblock to inhibit warning) pbx.c:3551:2: Initializer block for pbx_cli[1] has 4 fields, but struct opbx_cli_entry has 7 fields: { "show", "functions", NULL }, handle_show_functions, "Shows registered dialplan functions", show_functions_help pbx.c:3553:2: Initializer block for pbx_cli[2] has 5 fields, but struct opbx_cli_entry has 7 fields: { "show", "function", NULL }, handle_show_function, "Describe a specific dialplan function", show_function_help, complete_show_function pbx.c:3555:2: Initializer block for pbx_cli[3] has 5 fields, but struct opbx_cli_entry has 7 fields: { "show", "application", NULL }, handle_show_application, "Describe a specific dialplan application", show_application_help, complete_show_application pbx.c:3563:3: Additional initialization errors for pbx_cli not reported pbx.c: (in function opbx_unregister_application) pbx.c:3568:6: Test expression for if not boolean, type int: pthread_mutex_lock(&applock) pbx.c:3576:5: Implicitly only storage tmpl->next (type struct opbx_app *) not released before assignment: tmpl->next = tmp->next pbx.c:3578:5: Only storage tmp->next assigned to unqualified static: apps = tmp->next pbx.c:3582:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:3583:13: Function returns with global apps referencing released storage pbx.c:3581:9: Storage apps released pbx.c:3588:2: Return value (type int) ignored: pthread_mutex_un... pbx.c: (in function opbx_context_create) pbx.c:3596:2: Assignment of size_t to int: length = sizeof(struct opbx_context) pbx.c:3600:3: Return value (type int) ignored: pthread_mutex_lo... pbx.c:3607:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:3610:5: Return value (type int) ignored: pthread_mutex_un... pbx.c:3615:15: Function malloc expects arg 1 to be size_t gets int: length pbx.c:3617:18: Function memset expects arg 3 to be size_t gets int: length pbx.c:3618:3: Return value (type int) ignored: opbx_mutex_init(... pbx.c:3619:10: Parameter 1 (tmp->name) to function strcpy is declared unique but may be aliased externally by parameter 2 (name) pbx.c:3620:3: Implicitly only storage tmp->root (type struct opbx_exten *) not released before assignment: tmp->root = NULL pbx.c:3621:3: Implicitly only storage tmp->registrar (type char *) not released before assignment: tmp->registrar = registrar pbx.c:3621:3: Implicitly temp storage registrar assigned to implicitly only: tmp->registrar = registrar pbx.c:3622:3: Implicitly only storage tmp->next (type struct opbx_context *) not released before assignment: tmp->next = *local_contexts pbx.c:3623:3: Implicitly only storage tmp->includes (type struct opbx_include *) not released before assignment: tmp->includes = NULL pbx.c:3624:3: Implicitly only storage tmp->ignorepats (type struct opbx_ignorepat *) not released before assignment: tmp->ignorepats = NULL pbx.c:3626:7: Test expression for if not boolean, type int: option_debug pbx.c:3631:3: Variable registrar is kept in true branch, but not kept in false branch. pbx.c:3631:3: in true branch: pbx.c:3621:3: Storage registrar becomes kept pbx.c:3631:3: Clauses exit with *local_contexts referencing kept storage in true branch, local storage in false branch pbx.c:3622:3: Storage *local_contexts becomes kept pbx.c:3634:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:3635:9: Possibly null storage tmp returned as non-null: tmp pbx.c:3615:8: Storage tmp may become null pbx.c:3635:13: Storage *extcontexts reachable from parameter is kept (should be unqualified) pbx.c:3622:3: Storage *extcontexts becomes kept pbx.c: (in function opbx_merge_contexts_and_delete) pbx.c:3662:59: Passed storage store.lock.__m_lock contains 2 undefined fields: __status, __spinlock pbx.c:3662:59: Passed storage store.lock contains 4 undefined fields: __m_reserved, __m_count, __m_owner, __m_kind pbx.c:3662:40: Return value (type int) ignored: pthread_mutex_in... pbx.c:3663:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:3665:27: Operand of ! is non-boolean (int): !strcmp(registrar, hint->exten->parent->registrar) pbx.c:3665:7: Left operand of && is non-boolean (struct opbx_state_cb *): hint->callbacks && !strcmp(registrar, hint->exten->parent->registrar) pbx.c:3666:4: Assignment of arbitrary unsigned integral type to int: length = strlen(hint->exten->exten) + strlen(hint->exten->parent->name) + 2 + sizeof((*this)) pbx.c:3667:21: Function calloc expects arg 2 to be size_t gets int: length pbx.c:3672:4: Implicitly only storage this->callbacks (type struct opbx_state_cb *) not released before assignment: this->callbacks = hint->callbacks pbx.c:3675:4: Implicitly only storage this->context (type char *) not released before assignment: this->context = this->data pbx.c:3675:4: Unqualified storage this->data assigned to implicitly only: this->context = this->data pbx.c:3677:4: Implicitly only storage this->exten (type char *) not released before assignment: this->exten = this->data + strlen(this->context) + 1 pbx.c:3679:13: Implicitly only storage this->list.next (type struct store_hint *) not released before assignment: (this)->list.next = (&store)->first pbx.c:3682:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:3685:2: Return value (type int) ignored: pthread_mutex_lo... pbx.c:3700:3: Implicitly only storage lasttmp->next (type struct opbx_context *) not released before assignment: lasttmp->next = contexts pbx.c:3700:3: Unqualified static storage contexts assigned to implicitly only: lasttmp->next = contexts pbx.c:3705:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:3710:164: Clauses exit with cur referencing implicitly only storage in true branch, local storage in continuation pbx.c:3710:94: Storage cur becomes implicitly only (through alias store.first) pbx.c:3713:3: Return value (type int) ignored: pthread_mutex_lo... pbx.c:3725:5: Return value (type int) ignored: prevcb->callback... pbx.c:3726:10: Only storage prevcb->data (type void *) derived from released storage is not released (memory leak): prevcb pbx.c:3726:10: Only storage prevcb->callback (type opbx_state_cb_type) derived from released storage is not released (memory leak): prevcb pbx.c:3726:10: Only storage prevcb->next (type struct opbx_state_cb *) derived from released storage is not released (memory leak): prevcb pbx.c:3736:3: Return value (type int) ignored: pthread_mutex_un... pbx.c:3740:9: Only storage store.first (type struct store_hint *) derived from variable declared in this scope is not released (memory leak) pbx.c:3740:9: Only storage store.lock.__m_owner (type _pthread_descr) derived from variable declared in this scope is not released (memory leak) pbx.c:3740:9: Fresh storage exten not released before return pbx.c:3711:3: Fresh storage exten created pbx.c: (in function opbx_context_add_include) pbx.c:3752:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:3753:11: Unrecognized identifier: EBUSY pbx.c:3761:15: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:3761:8: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:3764:4: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3765:15: Fresh storage c not released before return pbx.c:3758:2: Fresh storage c created pbx.c:3767:3: Fresh storage c (type struct opbx_context *) not released before assignment: c = opbx_walk_contexts(c) pbx.c:3758:2: Fresh storage c created pbx.c:3771:2: Return value (type int) ignored: opbx_unlock_cont... pbx.c:3772:10: Unrecognized identifier: ENOENT pbx.c: (in function get_timerange) pbx.c:3795:34: Operand of ! is non-boolean (int): !strcmp(times, "*") pbx.c:3795:6: Left operand of || is non-boolean (int): opbx_strlen_zero(times) || !strcmp(times, "*") pbx.c:3797:4: Assignment of int to unsigned int: i->minmask[x] = (1 << 30) - 1 pbx.c:3808:8: Left operand of && is non-boolean (char): *e && !isdigit(*e) pbx.c:3810:7: Operand of ! is non-boolean (char): !*e pbx.c:3836:29: Right operand of << may be negative (int): 1 << (x % 30) The right operand to a shift operator may be negative (behavior undefined). (Use -shiftnegative to inhibit warning) pbx.c:3839:28: Right operand of << may be negative (int): 1 << (x % 30) pbx.c: (in function get_dow) pbx.c:3887:32: Operand of ! is non-boolean (int): !strcmp(dow, "*") pbx.c:3887:6: Left operand of || is non-boolean (int): opbx_strlen_zero(dow) || !strcmp(dow, "*") pbx.c:3888:10: Return value type int does not match declared type unsigned int: (1 << 7) - 1 pbx.c:3914:17: Right operand of << may be negative (int): 1 << x pbx.c:3917:16: Right operand of << may be negative (int): 1 << x pbx.c: (in function get_day) pbx.c:3929:32: Operand of ! is non-boolean (int): !strcmp(day, "*") pbx.c:3929:6: Left operand of || is non-boolean (int): opbx_strlen_zero(day) || !strcmp(day, "*") pbx.c:3930:3: Assignment of int to unsigned int: mask = (1 << 30) + ((1 << 30) - 1) pbx.c:3963:17: Right operand of << may be negative (int): 1 << x pbx.c:3965:16: Right operand of << may be negative (int): 1 << x pbx.c: (in function get_month) pbx.c:3993:32: Operand of ! is non-boolean (int): !strcmp(mon, "*") pbx.c:3993:6: Left operand of || is non-boolean (int): opbx_strlen_zero(mon) || !strcmp(mon, "*") pbx.c:3994:10: Return value type int does not match declared type unsigned int: (1 << 12) - 1 pbx.c:4019:17: Right operand of << may be negative (int): 1 << x pbx.c:4022:16: Right operand of << may be negative (int): 1 << x pbx.c: (in function opbx_build_timing) pbx.c:4033:6: Test expression for if not boolean, type int: opbx_strlen_zero(info_in) pbx.c:4036:19: Passed storage info_save not completely defined (*info_save is undefined): opbx_copy_string (info_save, ...) pbx.c:4039:2: Assignment of int to unsigned int: i->monthmask = (1 << 12) - 1 pbx.c:4040:2: Assignment of int to unsigned int: i->daymask = (1 << 30) - 1 + (1 << 30) pbx.c:4041:2: Assignment of int to unsigned int: i->dowmask = (1 << 7) - 1 pbx.c:4043:25: Left operand of && is non-boolean (char): *c && (*c != '|') pbx.c:4043:54: Test expression for if not boolean, type char: *c pbx.c:4049:25: Left operand of && is non-boolean (char): *c && (*c != '|') pbx.c:4049:54: Test expression for if not boolean, type char: *c pbx.c:4056:25: Left operand of && is non-boolean (char): *c && (*c != '|') pbx.c:4056:54: Test expression for if not boolean, type char: *c pbx.c:4062:25: Left operand of && is non-boolean (char): *c && (*c != '|') pbx.c:4062:54: Test expression for if not boolean, type char: *c pbx.c: (in function opbx_check_timing) pbx.c:4074:2: Return value (type time_t) ignored: time(&t) pbx.c:4078:29: Right operand of << may be negative (int): 1 << tm.tm_mon pbx.c:4078:29: Field tm.tm_mon used before definition pbx.c:4078:7: Operand of ! is non-boolean (unsigned int): !(i->monthmask & (1 << tm.tm_mon)) pbx.c:4084:28: Field tm.tm_mday used before definition pbx.c:4084:27: Right operand of << may be negative (int): 1 << (tm.tm_mday - 1) pbx.c:4084:7: Operand of ! is non-boolean (unsigned int): !(i->daymask & (1 << (tm.tm_mday - 1))) pbx.c:4088:27: Right operand of << may be negative (int): 1 << tm.tm_wday pbx.c:4088:27: Field tm.tm_wday used before definition pbx.c:4088:7: Operand of ! is non-boolean (unsigned int): !(i->dowmask & (1 << tm.tm_wday)) pbx.c:4092:7: Field tm.tm_hour used before definition pbx.c:4099:40: Field tm.tm_min used before definition pbx.c:4099:39: Right operand of << may be negative (int): 1 << (tm.tm_min / 2) pbx.c:4099:7: Operand of ! is non-boolean (unsigned int): !(i->minmask[tm.tm_hour] & (1 << (tm.tm_min / 2))) pbx.c: (in function opbx_context_add_include2) pbx.c:4122:2: Assignment of size_t to int: length = sizeof(struct opbx_include) pbx.c:4126:29: Function malloc expects arg 1 to be size_t gets int: length pbx.c:4128:11: Unrecognized identifier: ENOMEM pbx.c:4133:25: Function memset expects arg 3 to be size_t gets int: length pbx.c:4135:2: Implicitly only storage new_include->name (type char *) not released before assignment: new_include->name = p pbx.c:4138:2: Implicitly only storage new_include->rname (type char *) not released before assignment: new_include->rname = p pbx.c:4138:2: Kept storage p assigned to implicitly only: new_include->rname = p storage is transferred to a non-temporary reference after being passed as keep parameter. The storage may be released or new aliases created. (Use -kepttrans to inhibit warning) pbx.c:4135:2: Storage p becomes kept pbx.c:4142:8: Left operand of && is non-boolean (char): *c && (*c != '|') pbx.c:4145:6: Test expression for if not boolean, type char: *c pbx.c:4149:2: Implicitly only storage new_include->next (type struct opbx_include *) not released before assignment: new_include->next = NULL pbx.c:4150:2: Implicitly only storage new_include->registrar (type char *) not released before assignment: new_include->registrar = registrar pbx.c:4150:2: Implicitly temp storage registrar assigned to implicitly only: new_include->registrar = registrar pbx.c:4153:6: Test expression for if not boolean, type int: pthread_mutex_lock(&con->lock) pbx.c:4156:13: Only storage c not released before return pbx.c:4154:8: Storage c becomes only pbx.c:4164:4: Return value (type int) ignored: pthread_mutex_un... pbx.c:4165:12: Unrecognized identifier: EEXIST pbx.c:4166:14: Only storage c not released before return pbx.c:4154:8: Storage c becomes only pbx.c:4174:3: Implicitly only storage il->next (type struct opbx_include *) not released before assignment: il->next = new_include pbx.c:4176:3: Storage con->includes->stuff is kept in one path, but live in another. pbx.c:4135:2: Storage con->includes->stuff becomes kept pbx.c:4176:3: Storage con->includes->name is kept in one path, but live in another. pbx.c:4138:2: Storage con->includes->name becomes kept pbx.c:4176:3: Storage con->includes->next->stuff is kept in one path, but live in another. pbx.c:4135:2: Storage con->includes->next->stuff becomes kept pbx.c:4176:3: Storage con->includes->next->name is kept in one path, but live in another. pbx.c:4138:2: Storage con->includes->next->name becomes kept pbx.c:4179:2: Return value (type int) ignored: pthread_mutex_un... pbx.c:4181:11: Only storage c not released before return pbx.c:4154:8: Storage c becomes only pbx.c:4181:11: Storage con->includes->next->stuff reachable from parameter is kept (should be unqualified) pbx.c: (in function opbx_context_add_switch) pbx.c:4193:6: Test expression for if not boolean, type int: opbx_lock_contexts() pbx.c:4202:15: New fresh storage (type char *) passed as implicitly temp (not released): opbx_get_context_name(c) pbx.c:4202:8: Operand of ! is non-boolean (int): !strcmp(opbx_get_context_name(c), context) pbx.c:4205:4: Return value (type int) ignored: opbx_unlock_cont... pbx.c:4206:15: Fresh storage c not released before return pbx.c:4199:2: Fresh storage c created pbx.c:4208:3: Fresh storage c (... [Message clipped]