continue;
}
- for (param = switch_xml_child(myspan, "param"); param && paramindex < 10; param = param->next) {
+ memset(spanparameters, 0, sizeof(spanparameters));
+
+ for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
char *var = (char *) switch_xml_attr_soft(param, "name");
char *val = (char *) switch_xml_attr_soft(param, "value");
- if (ftdm_array_len(spanparameters) == paramindex) {
+ if (ftdm_array_len(spanparameters) - 1 == paramindex) {
ftdm_log(FTDM_LOG_ERROR, "Too many parameters for pri span '%s', ignoring everything after '%s'\n", name, var);
break;
}
+ if (ftdm_strlen_zero(var) || ftdm_strlen_zero(val)) {
+ ftdm_log(FTDM_LOG_WARNING, "Skipping parameter with empty name or value\n");
+ continue;
+ }
+
if (!strcasecmp(var, "context")) {
context = val;
} else if (!strcasecmp(var, "dialplan")) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required attribute 'name'\n");
continue;
}
-
+
+ memset(spanparameters, 0, sizeof(spanparameters));
+
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
char *var = (char *) switch_xml_attr_soft(param, "name");
char *val = (char *) switch_xml_attr_soft(param, "value");
+ if (ftdm_array_len(spanparameters) - 1 == paramindex) {
+ ftdm_log(FTDM_LOG_ERROR, "Too many parameters for pritap span '%s', ignoring everything after '%s'\n", name, var);
+ break;
+ }
+
if (!strcasecmp(var, "context")) {
context = val;
} else if (!strcasecmp(var, "dialplan")) {
continue;
}
- for (param = switch_xml_child(myspan, "param"); param && paramindex < 10; param = param->next) {
+ memset(spanparameters, 0, sizeof(spanparameters));
+
+ for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
char *var = (char *) switch_xml_attr_soft(param, "name");
char *val = (char *) switch_xml_attr_soft(param, "value");
break;
}
+ if (ftdm_strlen_zero(var) || ftdm_strlen_zero(val)) {
+ ftdm_log(FTDM_LOG_WARNING, "Skipping parameter with empty name or value\n");
+ continue;
+ }
+
if (!strcasecmp(var, "context")) {
context = val;
} else if (!strcasecmp(var, "dialplan")) {
return FTDM_FAIL;
}
- for (i = 0; i < 10 && ftdm_parameters[i].var; i++) {
+ for (i = 0; ftdm_parameters[i].var; i++) {
const char *var = ftdm_parameters[i].var;
const char *val = ftdm_parameters[i].val;
- if (!val) {
+ if (ftdm_strlen_zero(var)) {
+ ftdm_log(FTDM_LOG_WARNING, "Skipping parameter with no name\n");
+ continue;
+ }
+
+ if (ftdm_strlen_zero(val)) {
ftdm_log(FTDM_LOG_ERROR, "Parameter '%s' has no value\n", var);
snprintf(span->last_error, sizeof(span->last_error), "Parameter [%s] has no value", var);
return FTDM_FAIL;