]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[ozmod_libpri] Fix array out of bounds error and clean up some enums in lpwrap_pri.h
authorStefan Knoblich <stkn@freeswitch.org>
Thu, 4 Jun 2009 17:20:53 +0000 (17:20 +0000)
committerStefan Knoblich <stkn@freeswitch.org>
Thu, 4 Jun 2009 17:20:53 +0000 (17:20 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@737 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/src/ozmod/ozmod_libpri/lpwrap_pri.h
libs/freetdm/src/ozmod/ozmod_libpri/ozmod_libpri.c

index c3832626c1880f62b8d07e8c8a8e7a39f6a7eb75..cae88ccb9295ed2d69f51fe69119e9be071eda37 100644 (file)
 #define LPWRAP_MAX_CHAN_PER_SPAN 32
 
 typedef enum {
-       LPWRAP_PRI_EVENT_ANY = 0,
-       LPWRAP_PRI_EVENT_DCHAN_UP = PRI_EVENT_DCHAN_UP,
-       LPWRAP_PRI_EVENT_DCHAN_DOWN = PRI_EVENT_DCHAN_DOWN,
-       LPWRAP_PRI_EVENT_RESTART = PRI_EVENT_RESTART,
-       LPWRAP_PRI_EVENT_CONFIG_ERR = PRI_EVENT_CONFIG_ERR,
-       LPWRAP_PRI_EVENT_RING = PRI_EVENT_RING,
-       LPWRAP_PRI_EVENT_HANGUP = PRI_EVENT_HANGUP,
-       LPWRAP_PRI_EVENT_RINGING = PRI_EVENT_RINGING,
-       LPWRAP_PRI_EVENT_ANSWER = PRI_EVENT_ANSWER,
-       LPWRAP_PRI_EVENT_HANGUP_ACK = PRI_EVENT_HANGUP_ACK,
-       LPWRAP_PRI_EVENT_RESTART_ACK = PRI_EVENT_RESTART_ACK,
-       LPWRAP_PRI_EVENT_FACNAME = PRI_EVENT_FACNAME,
+       LPWRAP_PRI_EVENT_ANY           = 0,
+       LPWRAP_PRI_EVENT_DCHAN_UP      = PRI_EVENT_DCHAN_UP,
+       LPWRAP_PRI_EVENT_DCHAN_DOWN    = PRI_EVENT_DCHAN_DOWN,
+       LPWRAP_PRI_EVENT_RESTART       = PRI_EVENT_RESTART,
+       LPWRAP_PRI_EVENT_CONFIG_ERR    = PRI_EVENT_CONFIG_ERR,
+       LPWRAP_PRI_EVENT_RING          = PRI_EVENT_RING,
+       LPWRAP_PRI_EVENT_HANGUP        = PRI_EVENT_HANGUP,
+       LPWRAP_PRI_EVENT_RINGING       = PRI_EVENT_RINGING,
+       LPWRAP_PRI_EVENT_ANSWER        = PRI_EVENT_ANSWER,
+       LPWRAP_PRI_EVENT_HANGUP_ACK    = PRI_EVENT_HANGUP_ACK,
+       LPWRAP_PRI_EVENT_RESTART_ACK   = PRI_EVENT_RESTART_ACK,
+       LPWRAP_PRI_EVENT_FACNAME       = PRI_EVENT_FACNAME,
        LPWRAP_PRI_EVENT_INFO_RECEIVED = PRI_EVENT_INFO_RECEIVED,
-       LPWRAP_PRI_EVENT_PROCEEDING = PRI_EVENT_PROCEEDING,
-       LPWRAP_PRI_EVENT_SETUP_ACK = PRI_EVENT_SETUP_ACK,
-       LPWRAP_PRI_EVENT_HANGUP_REQ = PRI_EVENT_HANGUP_REQ,
-       LPWRAP_PRI_EVENT_NOTIFY = PRI_EVENT_NOTIFY,
-       LPWRAP_PRI_EVENT_PROGRESS = PRI_EVENT_PROGRESS,
-       LPWRAP_PRI_EVENT_KEYPAD_DIGIT = PRI_EVENT_KEYPAD_DIGIT,
-       LPWRAP_PRI_EVENT_IO_FAIL = 19
+       LPWRAP_PRI_EVENT_PROCEEDING    = PRI_EVENT_PROCEEDING,
+       LPWRAP_PRI_EVENT_SETUP_ACK     = PRI_EVENT_SETUP_ACK,
+       LPWRAP_PRI_EVENT_HANGUP_REQ    = PRI_EVENT_HANGUP_REQ,
+       LPWRAP_PRI_EVENT_NOTIFY        = PRI_EVENT_NOTIFY,
+       LPWRAP_PRI_EVENT_PROGRESS      = PRI_EVENT_PROGRESS,
+       LPWRAP_PRI_EVENT_KEYPAD_DIGIT  = PRI_EVENT_KEYPAD_DIGIT,
+       LPWRAP_PRI_EVENT_IO_FAIL       = 19,
+
+       /* don't touch */
+       LPWRAP_PRI_EVENT_MAX
 } lpwrap_pri_event_t;
 
 typedef enum {
@@ -68,17 +71,20 @@ typedef enum {
 } lpwrap_pri_node_t;
 
 typedef enum {
-       LPWRAP_PRI_SWITCH_UNKNOWN = PRI_SWITCH_UNKNOWN,
-       LPWRAP_PRI_SWITCH_NI2 = PRI_SWITCH_NI2,                 
-       LPWRAP_PRI_SWITCH_DMS100 = PRI_SWITCH_DMS100,
-       LPWRAP_PRI_SWITCH_LUCENT5E = PRI_SWITCH_LUCENT5E,
-       LPWRAP_PRI_SWITCH_ATT4ESS = PRI_SWITCH_ATT4ESS,
+       LPWRAP_PRI_SWITCH_UNKNOWN     = PRI_SWITCH_UNKNOWN,
+       LPWRAP_PRI_SWITCH_NI2         = PRI_SWITCH_NI2,
+       LPWRAP_PRI_SWITCH_DMS100      = PRI_SWITCH_DMS100,
+       LPWRAP_PRI_SWITCH_LUCENT5E    = PRI_SWITCH_LUCENT5E,
+       LPWRAP_PRI_SWITCH_ATT4ESS     = PRI_SWITCH_ATT4ESS,
        LPWRAP_PRI_SWITCH_EUROISDN_E1 = PRI_SWITCH_EUROISDN_E1,
        LPWRAP_PRI_SWITCH_EUROISDN_T1 = PRI_SWITCH_EUROISDN_T1,
-       LPWRAP_PRI_SWITCH_NI1 = PRI_SWITCH_NI1,
-       LPWRAP_PRI_SWITCH_GR303_EOC = PRI_SWITCH_GR303_EOC,
-       LPWRAP_PRI_SWITCH_GR303_TMC = PRI_SWITCH_GR303_TMC,
-       LPWRAP_PRI_SWITCH_QSIG = PRI_SWITCH_QSIG
+       LPWRAP_PRI_SWITCH_NI1         = PRI_SWITCH_NI1,
+       LPWRAP_PRI_SWITCH_GR303_EOC   = PRI_SWITCH_GR303_EOC,
+       LPWRAP_PRI_SWITCH_GR303_TMC   = PRI_SWITCH_GR303_TMC,
+       LPWRAP_PRI_SWITCH_QSIG        = PRI_SWITCH_QSIG,
+
+       /* don't touch */
+       LPWRAP_PRI_SWITCH_MAX
 } lpwrap_pri_switch_t;
 
 typedef enum {
@@ -88,7 +94,6 @@ typedef enum {
 struct lpwrap_pri;
 typedef int (*event_handler)(struct lpwrap_pri *, lpwrap_pri_event_t, pri_event *);
 typedef int (*loop_handler)(struct lpwrap_pri *);
-#define MAX_EVENT 18
 
 struct lpwrap_pri {
        struct pri *pri;
@@ -96,7 +101,7 @@ struct lpwrap_pri {
        zap_channel_t *dchan;
        unsigned int flags;
        void *private_info;
-       event_handler eventmap[MAX_EVENT+1];
+       event_handler eventmap[LPWRAP_PRI_EVENT_MAX];
        loop_handler on_loop;
 };
 
index 7053d3177de65311fb216d548e055b41254c9e12..013884da814ea68ac1736664299f78a934d6d5df 100644 (file)
@@ -900,7 +900,7 @@ static void *zap_libpri_run(zap_thread_t *me, void *obj)
                        LPWRAP_MAP_PRI_EVENT(isdn_data->spri, LPWRAP_PRI_EVENT_INFO_RECEIVED, on_info);
                        LPWRAP_MAP_PRI_EVENT(isdn_data->spri, LPWRAP_PRI_EVENT_RESTART, on_restart);
                        LPWRAP_MAP_PRI_EVENT(isdn_data->spri, LPWRAP_PRI_EVENT_IO_FAIL, on_io_fail);
-                       
+
                        if (down) {
                                zap_log(ZAP_LOG_INFO, "PRI back up on span %d\n", isdn_data->spri.span->span_id);
                                zap_set_state_all(span, ZAP_CHANNEL_STATE_RESTART);
@@ -910,9 +910,9 @@ static void *zap_libpri_run(zap_thread_t *me, void *obj)
                        isdn_data->spri.on_loop = check_flags;
                        isdn_data->spri.private_info = span;
                        lpwrap_run_pri(&isdn_data->spri);
-                       
+
                }
-               
+
                if (!zap_running() || zap_test_flag(span, ZAP_SPAN_STOP_THREAD)) {
                        break;
                }