summaryrefslogtreecommitdiff
path: root/asn1/ansi_map
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-09-13 20:20:11 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-09-13 20:20:11 +0000
commit30e64dade479cb3f1455299580575d44c900ac8d (patch)
treeabcb17a5d4c6650c2b2dfeb81ac6a0df7e04d37a /asn1/ansi_map
parentd582da8fcdf003685087c349736d680f9fd6e2bb (diff)
downloadwireshark-30e64dade479cb3f1455299580575d44c900ac8d.tar.gz
Try to protect the hash table...
svn path=/trunk/; revision=22866
Diffstat (limited to 'asn1/ansi_map')
-rw-r--r--asn1/ansi_map/packet-ansi_map-template.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/asn1/ansi_map/packet-ansi_map-template.c b/asn1/ansi_map/packet-ansi_map-template.c
index 012a19e2c3..d719636b04 100644
--- a/asn1/ansi_map/packet-ansi_map-template.c
+++ b/asn1/ansi_map/packet-ansi_map-template.c
@@ -437,14 +437,20 @@ update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb
p_private_tcap=pinfo->private_data;
if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){
/* Only do this once XXX I hope its the right thing to do */
- ansi_map_saved_invokedata = g_malloc(sizeof(ansi_map_saved_invokedata));
- ansi_map_saved_invokedata->opcode = p_private_tcap->d.OperationCode_private;
- ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator;
strcpy(buf,p_private_tcap->TransactionID_str);
/* The hash string needs to contain src and dest to distiguish differnt flows */
strcat(buf,src_str);
strcat(buf,dst_str);
strcat(buf,"\0");
+ /* If the entry allready exists don't owervrite it */
+ ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table,buf);
+ if(ansi_map_saved_invokedata)
+ return;
+
+ ansi_map_saved_invokedata = g_malloc(sizeof(ansi_map_saved_invokedata));
+ ansi_map_saved_invokedata->opcode = p_private_tcap->d.OperationCode_private;
+ ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator;
+
g_hash_table_insert(TransactionId_table,
g_strdup(buf),
ansi_map_saved_invokedata);