diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-09-13 20:20:11 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-09-13 20:20:11 +0000 |
commit | 30e64dade479cb3f1455299580575d44c900ac8d (patch) | |
tree | abcb17a5d4c6650c2b2dfeb81ac6a0df7e04d37a /asn1/ansi_map/packet-ansi_map-template.c | |
parent | d582da8fcdf003685087c349736d680f9fd6e2bb (diff) | |
download | wireshark-30e64dade479cb3f1455299580575d44c900ac8d.tar.gz wireshark-30e64dade479cb3f1455299580575d44c900ac8d.tar.bz2 wireshark-30e64dade479cb3f1455299580575d44c900ac8d.zip |
Try to protect the hash table...
svn path=/trunk/; revision=22866
Diffstat (limited to 'asn1/ansi_map/packet-ansi_map-template.c')
-rw-r--r-- | asn1/ansi_map/packet-ansi_map-template.c | 12 |
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); |