aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dns.c
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2005-06-04 11:47:38 +0000
committerUlf Lamping <ulf.lamping@web.de>2005-06-04 11:47:38 +0000
commitb59c893573a2413df189c92f5bbe185c32ae4024 (patch)
tree920255bdedb6081be5fc6234043ee52b1cdc218f /epan/dissectors/packet-dns.c
parentaac3bce7175c52b40f34bbe764a215769807efec (diff)
fix #201 second part: adapt the string length of the unformatted text, so it won't show \000 and beyond
svn path=/trunk/; revision=14550
Diffstat (limited to 'epan/dissectors/packet-dns.c')
-rw-r--r--epan/dissectors/packet-dns.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c
index e2e730c759..d2737c0408 100644
--- a/epan/dissectors/packet-dns.c
+++ b/epan/dissectors/packet-dns.c
@@ -750,6 +750,7 @@ dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
int len;
char name[MAXDNAME];
char *name_out;
+ int name_out_len;
int name_len;
int type;
int class;
@@ -767,12 +768,16 @@ dissect_dns_query(tvbuff_t *tvb, int offset, int dns_data_offset,
type_name = dns_type_name(type);
+ /* the name might contain non-printable characters, format it first */
+ /* the actual name to display will be smaller than the name_len */
+ /* XXX - is the name guaranteed to be a valid string or might strlen() fail? */
+ name_out_len = (name_len <= (int) strlen(name)) ? name_len : strlen(name);
+ name_out = format_text(name, name_out_len);
+
if (cinfo != NULL) {
- name_out = format_text(name, name_len);
col_append_fstr(cinfo, COL_INFO, " %s %s", type_name, name_out);
}
if (dns_tree != NULL) {
- name_out = format_text(name, name_len);
tq = proto_tree_add_text(dns_tree, tvb, offset, len, "%s: type %s, class %s",
name_out, type_name, dns_class_name(class));
q_tree = proto_item_add_subtree(tq, ett_dns_qd);