NCSI: Fix invalid UTF-8 encoding
This commit is contained in:
parent
2db8d6213f
commit
0256d09ab8
|
@ -26,6 +26,7 @@
|
||||||
#include <epan/expert.h>
|
#include <epan/expert.h>
|
||||||
#include <epan/addr_resolv.h>
|
#include <epan/addr_resolv.h>
|
||||||
#include <epan/pci-ids.h>
|
#include <epan/pci-ids.h>
|
||||||
|
#include <epan/charsets.h>
|
||||||
#include <epan/dissectors/packet-mctp.h>
|
#include <epan/dissectors/packet-mctp.h>
|
||||||
|
|
||||||
void proto_reg_handoff_ncsi(void);
|
void proto_reg_handoff_ncsi(void);
|
||||||
|
@ -513,15 +514,11 @@ dissect_ncsi_aen(tvbuff_t *tvb, proto_tree *tree)
|
||||||
static const gchar *
|
static const gchar *
|
||||||
ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset)
|
ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset)
|
||||||
{
|
{
|
||||||
int length = 16; /* MM.mm.uu.aa.bb */
|
|
||||||
guint8 octet;
|
guint8 octet;
|
||||||
int i;
|
int i;
|
||||||
char *digit_str;
|
char digit_str[16]; /* MM.mm.uu.aa.bb */
|
||||||
int str_offset = 0;
|
int str_offset = 0;
|
||||||
|
|
||||||
|
|
||||||
digit_str = (char *)wmem_alloc(wmem_packet_scope(), length);
|
|
||||||
|
|
||||||
for (i = 0 ; i < 3; i++) {
|
for (i = 0 ; i < 3; i++) {
|
||||||
octet = tvb_get_guint8(tvb, offset + i);
|
octet = tvb_get_guint8(tvb, offset + i);
|
||||||
|
|
||||||
|
@ -552,7 +549,7 @@ ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
digit_str[str_offset] = '\0';
|
digit_str[str_offset] = '\0';
|
||||||
return digit_str;
|
return get_utf_8_string(wmem_packet_scope(), digit_str, (int)strlen(digit_str));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -907,7 +904,7 @@ dissect_ncsi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
||||||
if (plen >= 40) { /* We got complete payload*/
|
if (plen >= 40) { /* We got complete payload*/
|
||||||
const gchar *ver_str;
|
const gchar *ver_str;
|
||||||
proto_tree *ncsi_ver_tree;
|
proto_tree *ncsi_ver_tree;
|
||||||
gchar fw_name[13];
|
gchar *fw_name;
|
||||||
guint16 vid, did, svid, ssid;
|
guint16 vid, did, svid, ssid;
|
||||||
|
|
||||||
ncsi_ver_tree = proto_tree_add_subtree(ncsi_payload_tree, tvb, 20,
|
ncsi_ver_tree = proto_tree_add_subtree(ncsi_payload_tree, tvb, 20,
|
||||||
|
@ -915,8 +912,7 @@ dissect_ncsi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
||||||
ver_str = ncsi_bcd_dig_to_str(tvb, 20);
|
ver_str = ncsi_bcd_dig_to_str(tvb, 20);
|
||||||
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_ver, tvb, 20, 8, ver_str);
|
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_ver, tvb, 20, 8, ver_str);
|
||||||
|
|
||||||
tvb_memcpy(tvb, fw_name, 28, 12);
|
fw_name = tvb_get_string_enc(pinfo->pool, tvb, 28, 12, ENC_ASCII);
|
||||||
fw_name[12] = 0;
|
|
||||||
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_name, tvb, 28, 12, fw_name);
|
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_name, tvb, 28, 12, fw_name);
|
||||||
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_ver, tvb, 40, 4, ncsi_fw_version(tvb, 40));
|
proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_ver, tvb, 40, 4, ncsi_fw_version(tvb, 40));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue