aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-q931.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-07-24 03:01:41 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-07-24 03:01:41 +0000
commit9ef6568c562416bcd0ebbb6a6e4324f94da90157 (patch)
tree6e9dd62b51fea388fc2b45110e1e9260caa8d47f /epan/dissectors/packet-q931.c
parentb8a874be215f94fc984ebdf9bd5d7252075eaab7 (diff)
some more dissectors converted to ep_tvb_get_string
again at least one obvious memleak was found in the old code svn path=/trunk/; revision=15031
Diffstat (limited to 'epan/dissectors/packet-q931.c')
-rw-r--r--epan/dissectors/packet-q931.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index db183c2132..bee100c009 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -40,6 +40,7 @@
#include "packet-e164.h"
#include <epan/prefs.h>
#include <epan/reassemble.h>
+#include <epan/emem.h>
#include "lapd_sapi.h"
#include "packet-tpkt.h"
@@ -57,8 +58,6 @@
*/
static void reset_q931_packet_info(q931_packet_info *pi);
static gboolean have_valid_q931_pi=FALSE;
-static q931_packet_info pi_arr[5]; /* We assuming a maximum of 5 q931 messaages per packet */
-static int pi_current=0;
static q931_packet_info *q931_pi=NULL;
static int q931_tap = -1;
@@ -2090,18 +2089,17 @@ dissect_q931_number_ie(tvbuff_t *tvb, int offset, int len,
if ( number_plan == 1 ) {
if ( e164_info.e164_number_type != NONE ){
- e164_info.E164_number_str = tvb_get_string(tvb, offset, len);
+ e164_info.E164_number_str = ep_tvb_get_string(tvb, offset, len);
e164_info.E164_number_length = len;
dissect_e164_number(tvb, tree, offset, len, e164_info);
- g_free(e164_info.E164_number_str);
}
}
/* Collect q931_packet_info */
if ( e164_info.e164_number_type == CALLING_PARTY_NUMBER && have_valid_q931_pi)
- q931_pi->calling_number = tvb_get_string(tvb, offset, len);
+ q931_pi->calling_number = ep_tvb_get_string(tvb, offset, len);
if ( e164_info.e164_number_type == CALLED_PARTY_NUMBER && have_valid_q931_pi)
- q931_pi->called_number = tvb_get_string(tvb, offset, len);
+ q931_pi->called_number = ep_tvb_get_string(tvb, offset, len);
}
/*
@@ -2342,11 +2340,8 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
fragment_data *fd_head;
tvbuff_t *next_tvb = NULL;
- pi_current++;
- if(pi_current==5){
- pi_current=0;
- }
- q931_pi=&pi_arr[pi_current];
+ q931_pi=ep_alloc(sizeof(q931_packet_info));
+
/* Init struct for collecting q931_packet_info */
reset_q931_packet_info(q931_pi);
have_valid_q931_pi=TRUE;
@@ -3249,10 +3244,6 @@ static void reset_q931_packet_info(q931_packet_info *pi)
return;
}
- if (pi->calling_number)
- g_free(pi->calling_number);
- if (pi->called_number)
- g_free(pi->called_number);
pi->calling_number = NULL;
pi->called_number = NULL;
pi->cause_value = 0xFF;