diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-02-23 16:50:18 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-02-24 03:23:45 +0000 |
commit | b9af5a5b329618467c3c930ac3dbc225e1f3ea6d (patch) | |
tree | 07de33813f5aa4dd5a3c9e2dfb6edd9c0447b1a2 | |
parent | 770ac9123b9c74e2325b39c5af04455dd14f2aba (diff) | |
download | wireshark-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.c | 26 |
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) |