summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-02-23 16:50:18 +0100
committerMichael Mann <mmann78@netscape.net>2015-02-24 03:23:45 +0000
commitb9af5a5b329618467c3c930ac3dbc225e1f3ea6d (patch)
tree07de33813f5aa4dd5a3c9e2dfb6edd9c0447b1a2
parent770ac9123b9c74e2325b39c5af04455dd14f2aba (diff)
downloadwireshark-b9af5a5b329618467c3c930ac3dbc225e1f3ea6d.tar.gz
proto.c: avoid corrupting stack when printing a 64 bits field in BASE_DEC_HEX or BASE_HEX_DEC format
Bug: 10994 Change-Id: Id5049054d5b04838df325f03a6bfa238a2063fb7 Reviewed-on: https://code.wireshark.org/review/7329 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/proto.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/epan/proto.c b/epan/proto.c
index 54db3cc7f3..4c07a5e2c9 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -166,13 +166,13 @@ static void fill_label_number(field_info *fi, gchar *label_str, gboolean is_sign
static void fill_label_number64(field_info *fi, gchar *label_str, gboolean is_signed);
static const char *hfinfo_number_value_format_display(const header_field_info *hfinfo, int display, char buf[32], guint32 value);
-static const char *hfinfo_number_value_format_display64(const header_field_info *hfinfo, int display, char buf[32], guint64 value);
+static const char *hfinfo_number_value_format_display64(const header_field_info *hfinfo, int display, char buf[48], guint64 value);
static const char *hfinfo_number_vals_format(const header_field_info *hfinfo, char buf[32], guint32 value);
-static const char *hfinfo_number_vals_format64(const header_field_info *hfinfo, char buf[32], guint64 value);
+static const char *hfinfo_number_vals_format64(const header_field_info *hfinfo, char buf[48], guint64 value);
static const char *hfinfo_number_value_format(const header_field_info *hfinfo, char buf[32], guint32 value);
-static const char *hfinfo_number_value_format64(const header_field_info *hfinfo, char buf[32], guint64 value);
+static const char *hfinfo_number_value_format64(const header_field_info *hfinfo, char buf[48], guint64 value);
static const char *hfinfo_numeric_value_format(const header_field_info *hfinfo, char buf[32], guint32 value);
-static const char *hfinfo_numeric_value_format64(const header_field_info *hfinfo, char buf[32], guint64 value);
+static const char *hfinfo_numeric_value_format64(const header_field_info *hfinfo, char buf[48], guint64 value);
static proto_item *
proto_tree_add_node(proto_tree *tree, field_info *fi);
@@ -4244,7 +4244,7 @@ proto_custom_set(proto_tree* tree, GSList *field_ids, gint occurrence,
const gchar *abbrev = NULL;
const char *hf_str_val;
- char number_buf[32];
+ char number_buf[48];
const char *number_out;
char *tmpbuf, *str;
int *field_idx;
@@ -6566,7 +6566,7 @@ fill_label_bitfield64(field_info *fi, gchar *label_str, gboolean is_signed)
guint64 unshifted_value;
guint64 value;
- char buf[32];
+ char buf[48];
const char *out;
header_field_info *hfinfo = fi->hfinfo;
@@ -6659,7 +6659,7 @@ fill_label_number64(field_info *fi, gchar *label_str, gboolean is_signed)
header_field_info *hfinfo = fi->hfinfo;
guint64 value;
- char buf[32];
+ char buf[48];
const char *out;
if (is_signed)
@@ -6834,9 +6834,9 @@ hfinfo_number_value_format_display(const header_field_info *hfinfo, int display,
}
static const char *
-hfinfo_number_value_format_display64(const header_field_info *hfinfo, int display, char buf[32], guint64 value)
+hfinfo_number_value_format_display64(const header_field_info *hfinfo, int display, char buf[48], guint64 value)
{
- char *ptr = &buf[31];
+ char *ptr = &buf[47];
gboolean isint = IS_FT_INT(hfinfo->type);
*ptr = '\0';
@@ -6889,7 +6889,7 @@ hfinfo_number_value_format(const header_field_info *hfinfo, char buf[32], guint3
}
static const char *
-hfinfo_number_value_format64(const header_field_info *hfinfo, char buf[32], guint64 value)
+hfinfo_number_value_format64(const header_field_info *hfinfo, char buf[64], guint64 value)
{
int display = hfinfo->display;
@@ -6935,7 +6935,7 @@ hfinfo_numeric_value_format(const header_field_info *hfinfo, char buf[32], guint
}
static const char *
-hfinfo_numeric_value_format64(const header_field_info *hfinfo, char buf[32], guint64 value)
+hfinfo_numeric_value_format64(const header_field_info *hfinfo, char buf[64], guint64 value)
{
/* Get the underlying BASE_ value */
int display = hfinfo->display & FIELD_DISPLAY_E_MASK;
@@ -6983,7 +6983,7 @@ hfinfo_number_vals_format(const header_field_info *hfinfo, char buf[32], guint32
}
static const char *
-hfinfo_number_vals_format64(const header_field_info *hfinfo, char buf[32], guint64 value)
+hfinfo_number_vals_format64(const header_field_info *hfinfo, char buf[64], guint64 value)
{
/* Get the underlying BASE_ value */
int display = hfinfo->display & FIELD_DISPLAY_E_MASK;
@@ -7750,7 +7750,7 @@ construct_match_selected_string(field_info *finfo, epan_dissect_t *edt,
if (filter != NULL) {
guint64 number;
- char buf [64];
+ char buf [48];
const char *out;
if (is_signed_num)