]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_freetdm: Avoid overflowing the spanparameters array of libpri spans, and make...
authorStefan Knoblich <s.knoblich@axsentis.de>
Thu, 11 Nov 2010 22:53:19 +0000 (23:53 +0100)
committerStefan Knoblich <s.knoblich@axsentis.de>
Thu, 11 Nov 2010 22:56:55 +0000 (23:56 +0100)
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
libs/freetdm/mod_freetdm/mod_freetdm.c

index 0a35913ec4104b34333ccae6c35d48e2870060df..879dd05155d9bc45c875262115feb70feeb0c655 100755 (executable)
@@ -2594,7 +2594,7 @@ static switch_status_t load_config(void)
                                char *var = (char *) switch_xml_attr_soft(param, "name");
                                char *val = (char *) switch_xml_attr_soft(param, "value");
 
-                               if (sizeof(spanparameters)/sizeof(spanparameters[0]) == paramindex) {
+                               if (ftdm_array_len(spanparameters) == paramindex) {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for ss7 span, ignoring any parameter after %s\n", var);
                                        break;
                                }
@@ -3106,6 +3106,11 @@ static switch_status_t load_config(void)
                                char *var = (char *) switch_xml_attr_soft(param, "name");
                                char *val = (char *) switch_xml_attr_soft(param, "value");
 
+                               if (ftdm_array_len(spanparameters) == paramindex) {
+                                       ftdm_log(FTDM_LOG_ERROR, "Too many parameters for libpri span, ignoring everything after '%s'\n", var);
+                                       break;
+                               }
+
                                if (!strcasecmp(var, "context")) {
                                        context = val;
                                } else if (!strcasecmp(var, "dialplan")) {
@@ -3165,7 +3170,8 @@ static switch_status_t load_config(void)
                        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 (sizeof(spanparameters)/sizeof(spanparameters[0]) == paramindex) {
+
+                               if (ftdm_array_len(spanparameters) == paramindex) {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for boost span, ignoring any parameter after %s\n", var);
                                        break;
                                }