diff --git a/asn1/ansi_map/packet-ansi_map-template.c b/asn1/ansi_map/packet-ansi_map-template.c index 0cb366fa10..34046df643 100644 --- a/asn1/ansi_map/packet-ansi_map-template.c +++ b/asn1/ansi_map/packet-ansi_map-template.c @@ -604,44 +604,6 @@ static dgt_set_t Dgt1_9_bcd = { '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?' } }; -/* Assumes the rest of the tvb contains the digits to be turned into a string - */ -static const char* -unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){ - - int length; - guint8 octet; - int i=0; - char *digit_str; - - length = tvb_length(tvb); - if (length < offset) - return ""; - digit_str = ep_alloc((length - offset)*2+1); - - while ( offset < length ){ - - octet = tvb_get_guint8(tvb,offset); - digit_str[i] = dgt->out[octet & 0x0f]; - i++; - - /* - * unpack second value in byte - */ - octet = octet >> 4; - - if (octet == 0x0f) /* odd number bytes - hit filler */ - break; - - digit_str[i] = dgt->out[octet & 0x0f]; - i++; - offset++; - - } - digit_str[i]= '\0'; - return digit_str; -} - /* Type of Digits (octet 1, bits A-H) */ @@ -715,7 +677,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre subtree = proto_item_add_subtree(actx->created_item, ett_mintype); - digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); } @@ -760,7 +722,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * if(octet_len == 0) return; offset++; - digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); break; @@ -798,7 +760,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * switch ((octet&0xf)){ case 1: /* BCD Coding */ - digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); break; diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c index cb0704332a..857e239fd6 100644 --- a/epan/dissectors/packet-ansi_map.c +++ b/epan/dissectors/packet-ansi_map.c @@ -1392,44 +1392,6 @@ static dgt_set_t Dgt1_9_bcd = { '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?' } }; -/* Assumes the rest of the tvb contains the digits to be turned into a string - */ -static const char* -unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){ - - int length; - guint8 octet; - int i=0; - char *digit_str; - - length = tvb_length(tvb); - if (length < offset) - return ""; - digit_str = ep_alloc((length - offset)*2+1); - - while ( offset < length ){ - - octet = tvb_get_guint8(tvb,offset); - digit_str[i] = dgt->out[octet & 0x0f]; - i++; - - /* - * unpack second value in byte - */ - octet = octet >> 4; - - if (octet == 0x0f) /* odd number bytes - hit filler */ - break; - - digit_str[i] = dgt->out[octet & 0x0f]; - i++; - offset++; - - } - digit_str[i]= '\0'; - return digit_str; -} - /* Type of Digits (octet 1, bits A-H) */ @@ -1503,7 +1465,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre subtree = proto_item_add_subtree(actx->created_item, ett_mintype); - digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); } @@ -1548,7 +1510,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * if(octet_len == 0) return; offset++; - digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); break; @@ -1586,7 +1548,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * switch ((octet&0xf)){ case 1: /* BCD Coding */ - digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd); + digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); proto_item_append_text(actx->created_item, " - %s", digit_str); break; @@ -15536,7 +15498,7 @@ dissect_ansi_map_ReturnData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of /*--- End of included file: packet-ansi_map-fn.c ---*/ -#line 3658 "../../asn1/ansi_map/packet-ansi_map-template.c" +#line 3620 "../../asn1/ansi_map/packet-ansi_map-template.c" /* * 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301 @@ -19388,7 +19350,7 @@ void proto_register_ansi_map(void) { NULL, HFILL }}, /*--- End of included file: packet-ansi_map-hfarr.c ---*/ -#line 5317 "../../asn1/ansi_map/packet-ansi_map-template.c" +#line 5279 "../../asn1/ansi_map/packet-ansi_map-template.c" }; /* List of subtrees */ @@ -19649,7 +19611,7 @@ void proto_register_ansi_map(void) { &ett_ansi_map_ReturnData, /*--- End of included file: packet-ansi_map-ettarr.c ---*/ -#line 5350 "../../asn1/ansi_map/packet-ansi_map-template.c" +#line 5312 "../../asn1/ansi_map/packet-ansi_map-template.c" }; static enum_val_t ansi_map_response_matching_type_values[] = {