aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2005-08-06 03:43:42 +0000
committerGerald Combs <gerald@wireshark.org>2005-08-06 03:43:42 +0000
commitb992c7339116ada28b7021349a6dbea9f023ded0 (patch)
treed34048dd20602ebb2a1ccafb954bec0bfe7c2e4a
parent312c524a4cb9cfc7884ed2b06aa8806a686d10a7 (diff)
In packet-frame.c, don't free static memory when we throw a
DissectorError. In packet-kerberos.c, restore pinfo->private_data if we throw an exception, which keeps the SMB dissector from throwing a DissectorError. Initialize variables in other places to squelch valgrind warnings. svn path=/trunk/; revision=15235
-rw-r--r--epan/asn1.c2
-rw-r--r--epan/dissectors/packet-frame.c1
-rw-r--r--epan/dissectors/packet-kerberos.c7
-rw-r--r--epan/dissectors/packet-ldap.c13
-rw-r--r--epan/dissectors/packet-smb.c3
-rw-r--r--epan/dissectors/packet-spnego.c2
6 files changed, 17 insertions, 11 deletions
diff --git a/epan/asn1.c b/epan/asn1.c
index e976866bbd..d3d9fc02f3 100644
--- a/epan/asn1.c
+++ b/epan/asn1.c
@@ -319,7 +319,7 @@ asn1_header_decode(ASN1_SCK *asn1, guint *cls, guint *con, guint *tag,
gboolean *defp, guint *lenp)
{
int ret;
- guint def, len;
+ guint def, len = 0;
ret = asn1_id_decode (asn1, cls, con, tag);
if (ret != ASN1_ERR_NOERROR)
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c
index aa2c705b11..ba98cfde20 100644
--- a/epan/dissectors/packet-frame.c
+++ b/epan/dissectors/packet-frame.c
@@ -288,7 +288,6 @@ show_exception(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
pinfo->current_proto, exception_message);
g_warning("Dissector bug, protocol %s, in packet %u: %s",
pinfo->current_proto, pinfo->fd->num, exception_message);
- g_free((void *)exception_message);
break;
default:
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index 6801a6db69..53a9293a3d 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -3837,7 +3837,12 @@ dissect_kerberos_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset += 4;
}
- offset=dissect_ber_choice(pinfo, kerberos_tree, tvb, offset, kerberos_applications_choice, -1, -1, NULL);
+ TRY {
+ offset=dissect_ber_choice(pinfo, kerberos_tree, tvb, offset, kerberos_applications_choice, -1, -1, NULL);
+ } CATCH_ALL {
+ pinfo->private_data=saved_private_data;
+ RETHROW;
+ } ENDTRY;
proto_item_set_len(item, offset);
pinfo->private_data=saved_private_data;
diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c
index 95b0739ab0..1800225700 100644
--- a/epan/dissectors/packet-ldap.c
+++ b/epan/dissectors/packet-ldap.c
@@ -353,7 +353,7 @@ static int read_sequence(ASN1_SCK *a, guint *len)
{
guint cls, con, tag;
gboolean def;
- guint length;
+ guint length = 0;
int ret;
ret = asn1_header_decode(a, &cls, &con, &tag, &def, &length);
@@ -588,8 +588,9 @@ static int read_bytestring_value(ASN1_SCK *a, proto_tree *tree, int hf_id,
else
string = "(null)";
- if (tree)
+ if (tree && length > 0) {
temp_item = proto_tree_add_bytes(tree, hf_id, a->tvb, start, a->offset - start, string);
+}
if (new_item)
*new_item = temp_item;
@@ -2338,10 +2339,10 @@ dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo,
guint length_remaining;
ASN1_SCK a;
int ret;
- guint msg_len;
- int messageOffset;
- guint headerLength;
- guint length;
+ guint msg_len = 0;
+ int messageOffset = 0;
+ guint headerLength = 0;
+ guint length = 0;
tvbuff_t *msg_tvb = NULL;
proto_item *msg_item = NULL;
proto_tree *msg_tree = NULL;
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c
index e8ac736a1d..fd396b9475 100644
--- a/epan/dissectors/packet-smb.c
+++ b/epan/dissectors/packet-smb.c
@@ -14762,7 +14762,7 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
nstime_t ns;
si_counter++;
- if(si_counter==20){
+ if(si_counter>=20){
si_counter=0;
}
si=&si_arr[si_counter];
@@ -14838,6 +14838,7 @@ dissect_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
si->ct->tid_service=g_hash_table_new(
smb_saved_info_hash_unmatched,
smb_saved_info_equal_unmatched);
+ si->ct->raw_ntlmssp = 0;
conversation_add_proto_data(conversation, proto_smb, si->ct);
}
diff --git a/epan/dissectors/packet-spnego.c b/epan/dissectors/packet-spnego.c
index 715adee18f..8566f3f4c2 100644
--- a/epan/dissectors/packet-spnego.c
+++ b/epan/dissectors/packet-spnego.c
@@ -1150,7 +1150,7 @@ dissect_spnego_mechToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *subtree;
gboolean def;
int ret;
- guint cls, con, tag, nbytes;
+ guint cls, con, tag, nbytes = 0;
gint length_remaining, reported_length_remaining;
tvbuff_t *token_tvb;