From: Anthony Minessale Date: Tue, 12 Jan 2016 22:29:37 +0000 (-0600) Subject: FS-8720 #resolve [Segmentation Fault when switch_channel_str2cause is called] X-Git-Tag: v1.6.7~2^2~153 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c01a8849a0109d6a4daec19a5c956b78be55fb1e;p=thirdparty%2Ffreeswitch.git FS-8720 #resolve [Segmentation Fault when switch_channel_str2cause is called] --- diff --git a/src/switch_channel.c b/src/switch_channel.c index c989ce2cb3..bd6b61a032 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -204,18 +204,21 @@ SWITCH_DECLARE(const char *) switch_channel_cause2str(switch_call_cause_t cause) SWITCH_DECLARE(switch_call_cause_t) switch_channel_str2cause(const char *str) { uint8_t x; - switch_call_cause_t cause = SWITCH_CAUSE_NONE; + switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING; - if (*str > 47 && *str < 58) { - cause = atoi(str); - } else { - for (x = 0; x < (sizeof(CAUSE_CHART) / sizeof(struct switch_cause_table)) - 1 && CAUSE_CHART[x].name; x++) { - if (!strcasecmp(CAUSE_CHART[x].name, str)) { - cause = CAUSE_CHART[x].cause; - break; + if (!zstr(str)) { + if (*str > 47 && *str < 58) { + cause = atoi(str); + } else { + for (x = 0; x < (sizeof(CAUSE_CHART) / sizeof(struct switch_cause_table)) - 1 && CAUSE_CHART[x].name; x++) { + if (!strcasecmp(CAUSE_CHART[x].name, str)) { + cause = CAUSE_CHART[x].cause; + break; + } } } } + return cause; }